我正在開發一個「框架」並發現自己編寫模塊。Javascript構造函數,原型和實例化。體系結構和框架
爲每個模塊存在一組常用的初始化規則和常用的一組函數。
STEP 1.構造函數:
var ns = "namespace1";
t.scenarios[ns] = function (container, instanceName, options) {
// common for all scenarios, e.g. options initialization
t.core.defaultScenarioConstructor(this, ns, container, instanceName, options)
// things only for NAMESPACE1
this.PROPERTY1 = 1;
}
STEP 2.(相關問題) 後來我有一個原型
var p = t.scenarios[ns].prototype;
p.newfunction = function(){
this.PROPERTY1; // accessible
}
其被充滿THINGS_ONLY_FOR_NAMESPACE1
t.core.defaultScenarioPrototype(p);
步驟3/4。 實例化類(新的關鍵字)&調用DOM建設者
p.initNewView = function(container) {/* build dom and assign handlers*/}
現在的問題......我想其他的「核心」模塊中執行常見的構造函數/原型初始化。如果在STEP 2上我們添加函數到原型,那麼它們有「this」關鍵字並且可以訪問CURRENT_INTANCE字段,例如PROPERTY1。
但是,如果原型作爲變量傳遞給「defaultScenarioPrototype」構建器,則所有函數都具有其他的「this」CORE類,它將生成構建器。
我們應該如何將「通用」功能添加到另一個模塊的原型中?
是't.core.defaultScenarioPrototype.call(this,p);'不工作?你可以使用調用或申請繼承:http://stackoverflow.com/questions/16063394/prototypical-inheritance-writing-up/16063711#16063711 – HMR
@HMR,非常感謝,我會檢查它。還沒有那個通話和申請肯。 –
@HMR發佈它作爲答案,這是非常有幫助的。 –