如何保护全局变量以便在Node.js中被覆盖?

时间:2015-01-21 10:00:58

标签: javascript node.js override globals

我想知道是否有任何方法可以确保在Node.js程序中错误地覆盖某些变量。

由于无法像Java一样将var设置为final,因此我没有看到任何方法来确保可以从任何地方覆盖的全局的稳定性,甚至可以从模板文件中删除EJS。

非回归测试,代码审查,包的使用以及一些方式来检测或避免此类错误,但我想知道Node中是否可以使用更强大的东西。

2 个答案:

答案 0 :(得分:0)

您可以创建不可写或冻结的对象

var obj = {
    test : 'test'
}

Object.freeze(obj);

obj.test = 'something else';

console.log(obj.test); // still "test"

据我所知,无法锁定变量,只能锁定对象的属性

答案 1 :(得分:0)

除了其他人提到的Object.freeze之外,node.js还应该支持const关键字,至少在启用es6的情况下运行。 这是针对块范围的变量,而不是属性。

或者Object.defineProperty可用于定义不可写,不可配置的属性。这也应该适用于模块或全局对象,尽管我自己没有测试过它。