在我當前的Web項目中,我正在處理多個JavaScript文件,每個文件都包含從其他類型繼承的類型定義。因此,在任何給定的文件,我可以有像...JavaScript繼承和提升
function Type(){
ParentType.call(this);
}
Type.prototype = Object.create(ParentType.prototype);
Type.prototype.constructor = Type;
...用同樣宣佈在另一個文件中ParentType
:
function ParentType(){
this.data = "";
}
由於與許多JavaScript文件工作中變得麻煩<head>
標籤,我寫了一個bash腳本將文件連接成一個文件(稱爲master.js
)。這樣,我可以鏈接HTML中的單個文件。
對於只有一個孩子的類型,無論我的文件串聯順序如何,原型鏈都是正確構建的。換句話說,這個片段...
function ParentType(){
this.data = "";
}
function Type(){
ParentType.call(this);
}
Type.prototype = Object.create(ParentType.prototype);
Type.prototype.constructor = Type;
...行爲等同於這個片段:
function Type(){
ParentType.call(this);
}
Type.prototype = Object.create(ParentType.prototype);
Type.prototype.constructor = Type;
function ParentType(){
this.data = "";
}
當我在任何情況下創造的Type
一個實例,ParentType.prototype.isPrototypeOf(typeobj)
返回true(其中typeobj
是我的實例Type
)。
function ParentType(){
this.data = "";
}
function Type(){
ParentType.call(this);
}
Type.prototype = Object.create(ParentType.prototype);
Type.prototype.constructor = Type;
function ChildType(){
Type.call(this);
}
ChildType.prototype = Object.create(Type.prototype);
ChildType.prototype.constructor = ChildType;
...否則,鏈條「:
然而,當我添加另一種類型的「原型鏈」的最後,只有當文件按順序連接起來,即工作休息」。我的猜測是,爲什麼在一個孩子的情況下這是可以接受的,因爲這兩種類型定義都被吊起來了,並且只有一組陳述擔心原型鏈。但對於多鏈接原型鏈,如果語句無序,則鏈無法正確連接。
所以我真正要問的是,有沒有一種方法可以在JavaScript中實現繼承,「工作」,而不管我的文件連接順序如何?我的第一個雖然是class
和extends
的做事方式,但後來我才知道,即使class
的定義也沒有掛起!
注:通過「工程」,所有我的意思是,當對任何其父母的原型檢查亞型繼承(所有的)父母的,isPrototypeOf
返回true,對任何目標函數/值。
+1回答實際問題,這幾乎是我所尋找的(「探索我的其他選項」)。似乎沒有好辦法避免提煉我的腳本,除非我想使用外部源。 – user1819699