原型 构造函数

 1 <!DOCTYPE html>
 2 <html>
 3     <head>
 4         <meta charset="UTF-8">
 5         <title></title>
 6         <script>
 7             
 8             //构造函数+原型
 9             function Person(){
10             }
11             Person.prototype = {
12                 constructor: Person,
13                 name: "张三",
14                 family: ["爸爸", "妈妈", "哥哥"],
15                 run: function(){
16                     console.log("run");
17                 }
18             }
19             
20             //xiaohong
21             var xiaohong = new Person();
22             console.log(xiaohong.family); //[爸爸,妈妈,哥哥]
23             
24             //xiaoming
25             var xiaoming = new Person();
26             console.log(xiaoming.family); //[爸爸,妈妈,哥哥]
27             
28             xiaoming.family.push("妹妹");
29             console.log(xiaoming.family); //[爸爸,妈妈,哥哥,妹妹]
30             console.log(xiaohong.family); //[爸爸,妈妈,哥哥,妹妹]
31             
32             
33             //单独使用原型存在问题:
34             //1, 不能初始化属性
35             //2, 原型对象的属性是共享的, 所以只要一个实例对象改变了属性值,则另外的实例对象的该值也随着改变了
36             
37             //构造函数+原型
38             //构造函数中: 属性
39             //原型中: 方法和共享属性
40             function IPod(_name, _color){
41                 this.name = _name;
42                 this.color = _color;
43             }
44             IPod.prototype.listenMusic = function(){
45                 console.log("可以 听音乐");
46             }
47             
48             var ipod = new IPod("ipod2", "black");
49             console.log(ipod.name);
50             console.log(ipod.color);
51             ipod.listenMusic();
52             
53             
54             
55         </script>
56     </head>
57     <body>
58     </body>
59 </html>

 

posted @ 2017-09-07 15:21  铜镜123  阅读(134)  评论(0编辑  收藏  举报