我对 Crockford 推荐的继承感到困惑,Crockford 方法和通用(默认)方法之间的主要区别是什么。
//Crockford method
function object(o) {
function F() {}
F.prototype = o;
return new F();
}
下面是更通用的方式
function Base(name) {
this.name = name;
}
Base.prototype.getName = function () {
return 'Base :' + this.name;
}
function Child(name) {
this.name = name;
}
Child.prototype.getName = function () {
return 'Child :' + this.name;
}
function Kid(name) {
this.name = name;
}
Kid.prototype.getName = function () {
return 'Kid :' + this.name;
}
Child.prototype = new Base ("childBase");
Kid.prototype = new Child ("kidChild");
var base = new Base ("myBase");
var child = new Child("myChild");
var kid = new Kid("myKid");
console.log(base.getName());
console.log(child.getName());
console.log(kid.getName());
以上两者有什么区别?
实际上我无法完全理解 Crockford 方法。任何人都可以帮助我找出通用方法的缺点和 Crockford 方法的优点。