在javascript中使用“get”和“set”作为属性名称是否安全



使用 get 和 set 作为对象文本的属性名称通常是否安全,如下所示:

var myObject={
    get: 'value1',
    set: 'value2'
}

Get 和 set 在 javascript 中似乎不是保留字,但我担心这可能会导致与某些内置行为发生冲突。特别是get和set似乎在Object.defineProperties方法中有一些非常独特的行为:

Object.defineProperties(someObject,{
    'Property1':{
        get:function(){
            return property1;
        },
        set:function(val){
            property1=val;
        },
        enumerable:true;
    }
});

在此内置行为中,getset 不被视为普通属性,而是在访问或分配someObject.Property1时实际执行其各自的函数。

由于它们在Object.defineProperties中的使用方式,我一直将getset视为特殊的保留字。所以我的问题是,这是一个很好的经验法则,还是我应该学会停止担心,只要语义上合适,就使用getset

是的,这是安全的。 getset始终被视为正常属性。它们用于在属性描述符中定义 getter 和 setter 这一事实是完全无关紧要的。

不安全属性的一个例子是valueOf,因为它实际上改变了对象的行为方式:

console.log(+{}); // NaN
console.log(+{ valueOf: () => 5 }); // 5
<</div> div class="one_answers">

getset 是传递给 Object.defineProperties 的对象中的有效属性这一事实证明了使用 getset 作为属性名称是安全的。

getset在 JavaScript 中唯一具有特殊含义的时候是当你创建一个 getter 或 setter 时,但语法是不同的,所以与属性名称没有冲突。

javascript中描述的setter getter机制,我没有看到任何冲突或理由认为它不安全,除非其他人也这样做,所以小心其他库覆盖

,所以旁边很好。

最新更新