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>