JavaScript get/set方法与标准方法

Ger*_*ald 10 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}
}
Run Code Online (Sandbox Code Playgroud)

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

tec*_*bar 7

与普通方法不同,使用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)
Run Code Online (Sandbox Code Playgroud)

正如提到的其他答案一样,请根据您的目标浏览器集来决定是否使用它。