我该怎么做:
var abc = (function(){
..
})();
register(abc); // outside the protected class
为此:(无需在类外调用 register):
function register(object){ stores the object }
var abc = (function(){
..
register(this); // inside the protected class
})();
一些背景。
主类有一个插件对象数组,“注册”函数放置插件。 abc 就是这样一个插件。模块模式闭包之后的插件。我想将插件实例放入列表中,并且插件尽可能独立。我想删除插件之外的其他功能。
我考虑过: MasterClass.plugins.abc = (函数..) 但我认为这会在加载任何插件之前创建对 MasterClass.plugins 的依赖。
最佳答案
您可以使用 Function.prototype.bind()(修改 this 值)和一个 var 内部,如下所示:
(function(){
var fun = function(){ alert( this.toString() )}
fun.bind(fun)();
})()
在你的情况下:
(function(){
var fun = function(){ alert( this.toString() )}
register(fun);
})()
关于javascript - javascript可以从构造函数内部传递自身吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24078948/