原型 构造函数
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>