有没有一种方法可以在 JavaScript 中更改 root 对象?
例如,在浏览器中,root 对象是 "window"。
输出结果为:
这告诉我,在
例如,在浏览器中,root 对象是 "window"。
X = 5;
console.log(Y);
等同于:
window.X = 5;
console.log(window.Y);
现在我想做的是更改这个根对象,这样当我执行以下操作时:
X = 6;
我需要这个的原因:
在Node.js应用程序中,程序的每个部分都可以访问全局对象。这是一个大问题,因为由Node.js web服务器执行的每个脚本都可以向其中添加新变量。它们会一直存在,直到Web服务器重新启动。我想通过更改全局对象来避免这个问题。
更新
我已经测试了以下代码,并得到了一个非常有趣的结果。你对以下代码有什么期望?
var X = {A:"a",B:"b"};
with(X){
A = 5;
C = 7;
}
for(a in X){
console.log(a+" is "+X[a]);
}
/*
Expected Console Output:
A is 5
B is b
C is 7
Real Console Output:
A is 5;
B is b;
*/
有没有办法让输出符合我的预期?
更新
我现在已经用以下代码测试了模块系统。
//program.js
var t = require("./module.js");
t.Test();
console.log(A);
//module.js
A = 5;
exports.Test = function(){
console.log("hello world!");
}
输出结果为:
hello world!
5
这告诉我,在
module.js
中定义的变量“A”已添加到program.js
的全局对象中。然而,该模块并未解决我的问题。