我想将对象中的一些属性添加到全局命名空间中。在浏览器上的 javascript 中,我可以将其添加到window
像这样的对象:
var myObject = {
foo : function() {
alert("hi");
}
// and many more properties
};
for (property in myObject) {
window[property] = myObject[property];
}
// now I can just call foo()
foo();
但由于 rhino 没有全局窗口对象,我无法做到这一点。是否有等效的对象或其他方法来实现此目的?
我找到了一个相当出色的解决方案NCZ在线 http://www.nczonline.net/blog/2008/04/20/get-the-javascript-global/:
function getGlobal(){
return (function(){
return this;
}).call(null);
}
该函数的关键在于,无论何时使用,this 对象始终指向全局对象call()
or apply()
并传入 null 作为第一个参数。由于空范围无效,因此解释器会插入全局对象。该函数使用内部函数来确保范围始终正确。
呼叫使用:
var glob = getGlobal();
glob
然后将返回[object global]
在犀牛中。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)