function object(o)
{
function F() {}
F.prototype = o;
return new F();
}
function inheritPrototype(subType,superType)
{
let prototype=object(superType.prototype);
prototype.constructor=subType;
subType.prototype=prototype;
}
function SuperType(name)
{
this.name=name;
this.colors=["red","blue","green"];
}
SuperType.prototype.sayName=function()
{
console.log(this.name);
}
function SubType(name,age)
{
SuperType.call(this.name);
this.age=age;
}
inheritPrototype(SubType,SuperType);
subType.prototype.sayAge=function()
{
console.log(this.age);
}
function object(o)
{
function F() {}
F.prototype = o;
return new F();
}
function inheritPrototype(subType,superType)
{
let prototype=object(superType.prototype);
prototype.constructor=subType;
subType.prototype=prototype;
}
let prototype=object(subType.prototype);
有意义吗,多包装一层,
直接let prototype=superType.prototype;
我感觉也行吧,
这里多包装一层什么意义,除了改变constructor指向
有意义,就是改变constructor指向,直接
let prototype=superType.prototype;
,修改prototypeprototype.constructor=subType
会改变superType.prototype,造成污染,加了一层,就不会造成污染了继承有很多种方式,优缺点都很明显,但不是说哪个最好,要看具体代码环境,再选择使用哪种