为什么JavaScript有两种不同的方式来获取/设置对象属性?
示例:
//implementation 1
var obj1 = {
"x":1,
get number() {return this.x},
set number(n) {this.x = n}
}
//implementation 2
var obj2 = {
"x":1,
getX: function(){return this.x},
setX: function(n){this.x = n}
}
一种实现方式是否优于另一种?
答案 0 :(得分:4)
与普通方法不同,使用get
和set
可以直接操作对象的属性(===更清晰/更简洁的代码) - 同时实际调用幕后的getter和setter方法
var obj1 = {
"x":1,
get number() {console.log('get was called'); return this.x},
set number(n) {console.log('set was called'); this.x = n}
};
alert(obj1.number); // calls the getter (and prints to console)
obj1.number = 10; // calls the setter (and prints to console)
正如提到的另一个答案,根据您的目标浏览器设置决定/反对使用它。