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>

 

posted @ 2013-05-21 22:15  学之乐  阅读(719)  评论(1编辑  收藏  举报