使用get并将其设置为对象文字的属性名称通常是安全的,如下所示:
var myObject={
get: 'value1',
set: 'value2'
}
获取并设置似乎不是javascript中的保留字,但我担心这可能会导致与某些内置行为发生冲突。特别是get和set似乎有一些pretty unique behavior in the Object.defineProperties
method:
Object.defineProperties(someObject,{
'Property1':{
get:function(){
return property1;
},
set:function(val){
property1=val;
},
enumerable:true;
}
});
在此内置行为中,get
和set
不会被视为普通属性,但在访问或分配someObject.Property1
时实际执行其各自的功能。
由于它们在Object.defineProperties
中的使用方式,我总是将get
和set
视为特殊保留字。所以我的问题是,这是一个很好的经验法则,还是我应该学会停止担心,只要在语义上看起来合适就使用get
和set
?
答案 0 :(得分:3)
是的,这很安全。 get
和set
始终被视为普通属性。它们用于在属性描述符中定义getter和setter这一事实完全无关紧要。
不安全属性的一个例子是valueOf
,因为它实际上改变了对象的行为方式:
console.log(+{}); // NaN
console.log(+{ valueOf: () => 5 }); // 5
答案 1 :(得分:2)
architecture Behavioral of system is
alias instruction_opcode : std_logic_vector(3 downto 0) is instruction(15 downto 12);
begin
end architecture;
和function addToCalendar(sport, date, time){
var sportName = String(sport);
Logger.log(sportName.includes("Soccer"));
}
是您传递给get
的对象中有效属性的事实证明使用set
和Object.defineProperties
是安全的财产名称。
唯一一次get
和set
在JavaScript中具有特殊含义的是当您创建getter或setter时,但语法不同,所以与财产名称没有冲突。
答案 2 :(得分:0)
javascript described中的setter getter机制,我没有看到任何冲突或理由认为它不安全,除非其他人也这样做,所以要小心覆盖其他库,以便它是好的去。