JavaScript get / set方法与标准方法

时间:2014-07-17 07:00:42

标签: javascript methods get set

为什么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}
}

一种实现方式是否优于另一种?

1 个答案:

答案 0 :(得分:4)

与普通方法不同,使用getset可以直接操作对象的属性(===更清晰/更简洁的代码) - 同时实际调用幕后的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)

正如提到的另一个答案,根据您的目标浏览器设置决定/反对使用它。