只读属性

mck*_*k89 4 javascript variables object

是否可以将javascript对象属性设为只读?我想设置一个无法修改的属性...

T.J*_*der 7

这是可能的,但价格昂贵.您可以通过拥有一个真正的私有成员变量然后提供一个访问器函数来实现:

var NiftyThing = function() {
    var trulyPrivateVariable;

    trulyPrivateVariable = 5; // For instance
    this.accessorFunction = function() {
        return trulyPrivateVariable;
    }
};
Run Code Online (Sandbox Code Playgroud)

这是有效的,因为访问器函数是对var的闭包.成本是每个实例都有自己的访问者函数副本.

编辑:用法:

var n = new NiftyThing();
alert(n.trulyPrivateVariable);
// Alerts "undefined"
alert(n.accessorFunction());
// Alerts "5"
Run Code Online (Sandbox Code Playgroud)

有关更多信息,请参阅JavaScript中的私有成员变量.

  • 但请注意,accessorFunction可以被确定的用户覆盖.虽然它不会影响reallyPrivateVariable,但它会影响调用accessorFunction的任何东西. (3认同)