Posted in Javascript onMay 22, 2013
<script language="javascript" type="text/javascript"> //(1)把一个方法变成一个对象,为对象创建方法和属性 var Name = function () { //通过prototype给一个对象创建方法 Name.prototype.Add = function (num, title) { } //也可以直接用this加方法名为对象创建方法和上面的等价 this.Way = function (str) { } //为对象添加属性值 Name.prototype.xing = "123"; //定义静态属性和方法 Name.shi = "static"; Name.Addd = function (num, title) { } //静态定义的局部属性和方法只能在静态的类型里面用 alert(Name.shi); Name.Addd(1, 2); } //方法也可以这样声明 function Name1() { Name1.prototype.add = function () { } this.way = function () { } Name1.prototype.shu = "other"; } //静态定义的全局属性和方法通用 Name.sha = "static"; Name.Addd2 = function () { } alert(Name.sha); //调用静态属性 Name.Addd2(); //调用静态方法 var name = new Name(); name.Add(); //对象调用方法 name.Way(); alert(name.xing); //对象调用属性 /*静态的全局变量,在方法外可以调用;静态的局部变量和方法仅限于方法内使用;实例对象不能调用静态的方法 */ /*实例对象不能使用prototype; */ //(2)Javascript面向对象 继承 //父类 function Class() { this.name = "name"; this.method = function () { alert("method"); } } //子类 function Class1() { this.name1 = "name1"; this.method1 = function () { alert("method1"); } } //子类继承父类 Class1.prototype = new Class(); var obj = new Class1(); alert(obj.name); alert(obj.name1); obj.method(); obj.method1(); /****** 子类继承父类的语法,子类.prototype=new 父类(); *****/ //(3)子类重写父类 //子类 function Class2() { this.name2 = "name2"; this.method2 = function () { alert("method2"); } } Class2.prototype = new Class(); //继承 Class2.prototype.name = "updateName"; //重写父类的属性 Class2.prototype.method = function () {//重写父类的方法 alert("UpdateMethod"); } var obj2 = new Class2(); alert(obj2.name); //显示updateName obj2.method(); //显示UpdateMethod alert(obj2.name2); obj2.method2(); //(4){}里面的为对象 var arr = new Array(); arr.push({ "name": "1", "age": 12, funA: function () { } }); arr.push({ "name": "2", "age": 13 }); arr.push({ "name": "3", "age": 14 }); for (var i = 0; i < arr.length; i++) { alert(arr[i].name); alert(arr[i].age); alert(arr[i].funA()); } /****一个对象也可以这么定义***/ var newObject = { "name": "Jim", "sex": "Man", Way: function () { } }; </script>
JS中的prototype与面向对象的实例讲解
声明:登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。
Reply on: @reply_date@
@reply_contents@