//原型链继承
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"]
01-14 01:29