我想防止变量被更改。特别是对象的属性:是否可以在Node.js中只读取一个变量
var foo = { bar: 'baz' };
// do something to foo to make it readonly
foo.bar = 'boing'; // should throw exception
可以这样做吗?
我想防止变量被更改。特别是对象的属性:是否可以在Node.js中只读取一个变量
var foo = { bar: 'baz' };
// do something to foo to make it readonly
foo.bar = 'boing'; // should throw exception
可以这样做吗?
你可以尝试
Object.defineProperty(foo, "bar", { writable: false });
和后期分配要么静静地失败,或者,如果你是在严格模式下,抛出一个异常(根据大卫·弗拉纳根“JavaScript:权威指南”)。
你可以省略**可写:false ** //默认为false – Givi 2013-04-05 22:01:13
注意:根据[MDN](https),'writable'默认为false ://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Object/defineProperty)。 – 2013-04-05 22:02:16
“可写”默认情况下确实是false。尽管如此,一些冗余使其更加明显不会受到伤害。 – 2013-04-05 22:07:56
使用功能:
var foo = function() {
var bar = 'baz';
return {
getBar: function() {
return bar;
}
}
}();
以这种方式foo.bar是不确定的,你只能通过foo.getBar访问它();
虽然你的回答是正确的,但这与原来的问题不一样。你只是建议只有一种技术来实现相同的目标... – fabrizi0 2016-04-04 17:48:39
请看下面的例子:
var Foo = function(){
this.var1 = "A"; // public
var var2 = "B"; // private
this.getVar2 = function(){ return var2; }
}
var foo = new Foo();
console.log(foo.var1); // will output A
console.log(foo.var2) // undefined
console.log(foo.getVar2()) // will output B
尝试使用JavaScript Object.defineProperty,阅读它可能会有用https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Object/defineProperty – Givi 2013-04-05 21:56:30