我正在使用 Revealing Prototype Pattern 并将 2 个不同的原型放入同一个 JavaScript 文件中。这些链接指向我发现的与此相关的文章。 http://bit.ly/U83hdg,http://bit.ly/VmJ71h。_ _
我的印象是这些会像原子类一样运行,其中与一个相关的函数将不知道另一个函数。
例如,这两个原型都有一个“init”和一个“set”函数。我在浏览器中看到的行为是“init”的最后一个版本被执行,即使代码引用了第一个原型名称。
这是我的两个原型中的通用精简代码。
var operationA = function (control, settings) {
this.control = control;
this.settings = settings;
};
operationA.prototype = function () {
init = function () {
// do something
return this;
}
set = function () {
// do something
return this;
};
return {
init: init,
set: set
};
}
var operationB = function (control, settings) {
this.control = control;
this.settings = settings;
};
operationB.prototype = function () {
init = function () {
// do something
return this;
}
set = function () {
// do something
return this;
};
return {
init: init,
set: set
};
}
这就是我实例化第一个对象的方式。
var objectASettings = {
property1: 48,
property2: 37
};
var objectA = new operationA('#mySelector', objectASettings);
objectA.init().set();
当上述运行时,正在执行 operationB 原型中的 init 和 set 函数,而不是执行 operationA 原型中的 init 和 set 函数。
我假设这些原型基本上命名了它们包含的函数。我是否需要为 operationA 和 operationB 创建唯一的公共函数名称(如 initA、setA、initB、setB)?
有没有办法让这些公共函数自包含和/或命名空间,所以我可以公开相同的 init 操作名称并在同一个文件中设置 2 个不同的原型?
谢谢你的帮助。