JavaScript继承-原型链继承

Posted 好多坨屎

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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属性
//SuperType构造函数是会被SubType的所有实例所共享的
var sub2 = new SubType();
sub1.girlFriends.push("xiaochen");
console.log(sub2.girlFriends);    //(3) ["xiaoli", "xiaowang", "xiaochen"]

 

以上是关于JavaScript继承-原型链继承的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript之继承(原型链)

JavaScript之继承(原型链)

深入理解javascript原型和闭包——继承

JavaScript之继承(原型链)

javascript类继承系列二(原型链)

JavaScript高级原型和继承相关:原型对象函数原型原型链和继承继承的优化对象判断相关方法