理解JS 原型链 ( 一 )

原链接:http://blog.csdn.net/hongse_zxl/article/details/44622997

 

 

 

     

 

 

 

 

 

 

 

 1 //定义父类Person,构造函数内有两个属性name和age,原型对象内定义了sayName方法    
 2 function Person(name, age) {   
 3     this.name = name;   
 4     this.age = age;  
 5 }   
 6 Person.prototype.sayName = function(){   
 7     alert(this.name);   
 8 }  
 9   
10 //定义子类Man,让其模拟继承父类  
11 Personfunction Man(name, age){   
12     Person.call(this, name, age);  //子类中调用父类的构造函数   
13     this.gender = "male";          //子类中定义个新属性gender  
14 }  
15   
16 Man.prototype = new Person();  //继承是通过创建父类的原型对象,并将子类的prototype指针指向该原型对象来实现的。

17 Man.prototype.constructor = Person; 18 Man.prototype.sayGender = function (){ 19 alert(this.gender); 20 }; 21 22 var m1 = new Man("Jack", 32); 23 m1.sayName(); //Jack 24 m1.sayGender(); //male 25 var m2 = new Man("Zhang", 30); 26 m2.sayName(); //Zhang 27 m2.sayGender(); //male 28 29 alert(m1 instanceof Object); //true,显然创建的实例对象,既是Object,也是Person,也是Man 30 alert(m1 instanceof Person); //true 31 alert(m1 instanceof Man); //true 32 33 alert(Object.prototype.isPrototypeOf(m1)); //true 34 alert(Person.prototype.isPrototypeOf(m1)); //true 35 alert(Man.prototype.isPrototypeOf(m1)); //true

 

posted @ 2017-11-21 21:19  conserdao  阅读(188)  评论(0编辑  收藏  举报