码迷,mamicode.com
首页 > 编程语言 > 详细

javascript面向对象和原型

时间:2016-04-24 12:27:16      阅读:190      评论:0      收藏:0      [点我收藏+]

标签:

模式

 1 //构造函数+原型模型
 2 function Box(name,age){   //保持独立的用构造函数
 3     this.name=name;
 4     this.age=age;
 5     this.family=[‘哥哥‘,‘姐姐‘,‘弟弟‘];
 6     
 7 }
 8 
 9 Box.prototype={            //保持共享的用原型模型
10     constructor:Box,
11     run:function(){
12         return this.name + this.age + this.family;
13     }
14 }
15 
16 var box1 = new Box(‘Lee‘,100);
17 // alert(box1.run());
18 box1.family.push(‘妹妹‘);
19 alert(box1.family);
20 
21 var box2 = new Box(‘Jack‘,200);
22 // alert(box2.run());
23 alert(box2.family);    //引用类型没有使用原型,所以没有共享

动态原型

 1 //动态原型模型,可以将原型封装到原型,每次运行都要初始化一次
 2 function Box(name,age){
 3     this.name=name;
 4     this.age=age;
 5     this.family=[‘哥哥‘,‘姐姐‘,‘弟弟‘];
 6 
 7  //    alert("原型初始化开始");
 8     // Box.prototype.run = function(){
 9     //     return this.name + this.age + this.family;
10     // }
11     // alert("原型初始化结束");
12     
13     if(typeof this.run != ‘function‘){    //判断run是否存在,即是否已初始化
14         alert("原型初始化开始");
15         Box.prototype.run = function(){
16             return this.name + this.age + this.family;
17         }
18         alert("原型初始化结束");
19     }
20 }
21 
22 var box1 = new Box(‘Lee‘,100);
23 alert(box1.run());
24 
25 var box2 = new Box(‘Jack‘,200);
26 alert(box2.run());

工厂模型

 1 工厂模式
 2 function Object(name,age){
 3     var obj = new Object();
 4     obj.name = name;
 5     obj.age = age;
 6     obj.run = function(){
 7 
 8 
 9     }
10     return obj;
11 }

寄生构造函数模型

 1 //寄生构造函数模式
 2 function Box(name,age){
 3     var obj = new Object();
 4     obj.name = name;
 5     obj.age = age;
 6     obj.run = function(){
 7         return name + age;
 8     }
 9     return obj;
10 }

稳妥构造函数模型

 1 //稳妥构造函数,函数体不能用this,实例化不能用new
 2 function Box(name,age){      
 3     var obj = new Object();
 4     obj.name = name;
 5     obj.age = age;
 6     obj.run = function(){
 7         return name + age;
 8     }
 9     return obj;
10 }
11 var box1 = Box(‘Lee‘,100);
12 alert(box1.run());

 

javascript面向对象和原型

标签:

原文地址:http://www.cnblogs.com/wangwanchao/p/5426577.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!