JavaScript继承-原型链继承

//原型链继承
function SuperType(){
    this.name = 'super';
    this.girlFriends = ["xiaoli","xiaowang"];
}
SuperType.prototype.sayName = function(){
    console.log(this.name);
}
function SubType(){
    this.age = 20;
}
//创建SuperType的实例赋给SubType的原型
//实现继承的本质是重写原型对象,代之以一个新类型的实例
SubType.prototype = new SuperType();
SubType.prototype.sayAge = function(){
    console.log(this.age);
}
var sub1 = new SubType();
sub1.sayName();        //super
sub1.sayAge();        //20
//现在sub.constructor指向SuperType
//是因为原来SubType的constructor被重写的缘故
console.log(sub1.constructor);    //输出的SuperType函数

//原型链的问题
//通过以下代码,我们会发现SubType的所有实例都会共享这girlFriends属性
//由此可知,用原型链继承方式继承的构造函数,它不管创建了多少个实例,都会共享父类构造函数中的引用值
var sub2 = new SubType(); sub1.girlFriends.push("xiaochen"); console.log(sub2.girlFriends); //(3) ["xiaoli", "xiaowang", "xiaochen"]
posted @ 2019-11-06 11:49  好多坨屎  阅读(84)  评论(0)    收藏  举报