的问题:我想遍历我的函数列表,并进行修改的地方,使用如下代码:性交的JavaScript模块范围
for(var funcProperty in scope) {
scope['_'+funcProperty] = scope[funcProperty];
scope[funcProperty] = wrapFunctionInTryCatchBlock(scope['_'+funcProperty]);
}
我想这样做,但没有明确不必经过我所有的函数,并将它们添加到某个对象,从而创建所需的范围。我不想这样做,因为那么所有的功能,相互调用,必须有自己的名字修改,加长成为:
funcName
成为scopeObject.funcName
:烦人。
我能做到这一点很容易,如果我的功能是在全局对象,即Window
,但是我不想污染全局命名空间,所以我把它们放在一个模块中,像这样:
var MyModule = (function() {
function privateFunc1(...) {...}
function privateFunc2(...) {...}
var public_api = {
coolName : privateFunc1
};
return public_api;
}());
但是,我可以看到并发现无法访问立即执行的函数中存在的作用域对象,该对象的返回值分配给MyModule。
我试着这样做,从MyModule的范围内:
console.log(this)
,看看我们是否确实有访问范围,不知何故,但是,当然,事实证明,这被称为窗口。
我的问题是真的:什么是在MyModule的私人范围的方法分配到,因为它不是全局对象,而且它确实存在,因为所有的功能都有它隐含的准入范围对象。有没有什么办法可以让我作为一个JavaScript程序员可以明确地访问范围对象并枚举它的属性还是那个FORBIDDEN?