我正在开发一个“框架”并发现自己正在编写模块。
每个模块都存在一组通用的初始化规则和通用的函数集。
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);
STEP 3 / 4. 实例化类(使用 new 关键字)并调用 dom builder
p.initNewView = function(container) {/* build dom and assign handlers*/}
现在的问题......我想在另一个“核心”模块中进行常见的构造函数/原型初始化。如果在第 2 步中我们向原型添加函数,那么它们具有“this”关键字并且可以访问 CURRENT_INTANCE 字段,例如 PROPERTY1。
但是,如果原型作为变量传递给“defaultScenarioPrototype”构建器,则所有函数都具有 CORE 类的另一个“this”,构建器所在的位置。
我们应该如何将“通用”功能添加到另一个模块的原型中?