0
我對Crockford推薦的繼承存在困惑,Crockford方法和通用(默認)方法之間的主要區別是什麼。Javascript基本繼承vs 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());
是什麼介於兩者之間的區別?
其實我不能完全理解克羅克福德方法。任何人都可以幫助我找出克羅克福德方法中通用方法和優點的缺點。
你真的看了看輸出嗎?它不應該是你期望的,因爲在你已經爲它們分配了函數('getName')之後,你重寫了原型。 – 2012-08-04 23:08:56
看看[這個答案](http://stackoverflow.com/a/1598077/1048572) – Bergi 2012-08-04 23:23:32
@EliasVanOotegem:我會說一個構造函數(用於'new'關鍵字)*確實創建*繼承鏈... – Bergi 2012-08-04 23:24:51