我一直在使用 Prototype Revealing Pattern,一个简单的示例如下所示。
如果我返回未注释的对象以从原型函数中公开公共函数,则它工作正常,如此处所示jsFiddle
另一方面,如果我使用另一个嵌套对象(被注释掉的对象)将返回的公共函数组织在不同的层次结构中,则仍然可以调用函数,但 instanceVar 在“this”中未定义
我理解为什么(我认为),但我不确定如何传递正确的“this”实例,或者是否可以使用这种模式,我想知道是否有人知道如何做到这一点?
我已经以多种方式尝试了 .call(this) ,但仍然无法获得任何快乐。
WhoSays = function (sentence) {
this.instanceVar = sentence;
};
WhoSays.prototype = (function () {
var jimSays = function () {
return 'jim says ' + this.instanceVar;
};
var bobSays = function () {
return 'bob says ' + this.instanceVar;
};
/*return {
says : {
jim : jimSays,
bob : bobSays
}
};*/
return {
jim: jimSays,
bob: bobSays
};
}());
. 更新:
我不想修改调用,调用者不需要知道如何使用超出显而易见的模式。
我确信这可能不是一个聪明的做事方式,命名空间层次结构可能是一个更好的方法,但如果从调用者的角度来看,如果不使用调用来绑定“this”,我仍然感兴趣,例如谁。说.jim.apply(谁)