JS中的prototype与面向对象
详情看代码的注释
1 <script language="javascript" type="text/javascript"> 2 //(1)把一个方法变成一个对象,为对象创建方法和属性 3 var Name = function () { 4 //通过prototype给一个对象创建方法 5 Name.prototype.Add = function (num, title) { 6 } 7 //也可以直接用this加方法名为对象创建方法和上面的等价 8 this.Way = function (str) { 9 } 10 //为对象添加属性值 11 Name.prototype.xing = "123"; 12 13 //定义静态属性和方法 14 Name.shi = "static"; 15 Name.Addd = function (num, title) { 16 } 17 //静态定义的局部属性和方法只能在静态的类型里面用 18 alert(Name.shi); 19 Name.Addd(1, 2); 20 21 } 22 //方法也可以这样声明 23 function Name1() { 24 Name1.prototype.add = function () { } 25 this.way = function () { } 26 Name1.prototype.shu = "other"; 27 } 28 //静态定义的全局属性和方法通用 29 Name.sha = "static"; 30 Name.Addd2 = function () { 31 } 32 alert(Name.sha); //调用静态属性 33 Name.Addd2(); //调用静态方法 34 var name = new Name(); 35 name.Add(); //对象调用方法 36 name.Way(); 37 alert(name.xing); //对象调用属性 38 /*静态的全局变量,在方法外可以调用;静态的局部变量和方法仅限于方法内使用;实例对象不能调用静态的方法 */ 39 /*实例对象不能使用prototype; */ 40 41 42 //(2)Javascript面向对象 继承 43 //父类 44 function Class() { 45 this.name = "name"; 46 this.method = function () { 47 alert("method"); 48 } 49 } 50 //子类 51 function Class1() { 52 this.name1 = "name1"; 53 this.method1 = function () { 54 alert("method1"); 55 } 56 } 57 //子类继承父类 58 Class1.prototype = new Class(); 59 var obj = new Class1(); 60 alert(obj.name); 61 alert(obj.name1); 62 obj.method(); 63 obj.method1(); 64 /****** 子类继承父类的语法,子类.prototype=new 父类(); *****/ 65 //(3)子类重写父类 66 //子类 67 function Class2() { 68 this.name2 = "name2"; 69 this.method2 = function () { 70 alert("method2"); 71 } 72 } 73 Class2.prototype = new Class(); //继承 74 Class2.prototype.name = "updateName"; //重写父类的属性 75 Class2.prototype.method = function () {//重写父类的方法 76 alert("UpdateMethod"); 77 } 78 var obj2 = new Class2(); 79 alert(obj2.name); //显示updateName 80 obj2.method(); //显示UpdateMethod 81 alert(obj2.name2); 82 obj2.method2(); 83 84 //(4){}里面的为对象 85 var arr = new Array(); 86 arr.push({ "name": "1", "age": 12, funA: function () { } }); 87 arr.push({ "name": "2", "age": 13 }); 88 arr.push({ "name": "3", "age": 14 }); 89 for (var i = 0; i < arr.length; i++) { 90 alert(arr[i].name); 91 alert(arr[i].age); 92 alert(arr[i].funA()); 93 } 94 /****一个对象也可以这么定义***/ 95 var newObject = { 96 "name": "Jim", 97 "sex": "Man", 98 Way: function () { } 99 }; 100 </script>