带有JSON对象的ES6 getter setter

时间:2016-03-16 07:51:30

标签: javascript json ecmascript-6

根据这份文件

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/set

你可以做这样的事情

var o = {
  set current (str) {
    this.log[this.log.length] = str;
  },
  log: []
}

但是如果我希望current变量是对象并且我想对该对象的属性执行setter该怎么办?

以下似乎无法正常工作

var o = {
  set current.myVal (str) {
    this.log[this.log.length] = str;
  },
  log: []
}

这样做的正确方法是什么?我读到你可以使用expression,但没有例子。

**更新1 **

下面的答案之一是正确的,但如果它是class

class o {
  set current.myVal (str) {
    this.log[this.log.length] = str;
  }
}

我在下面试过并且没有工作

class o {
  current: {
    set myVal(str) {
      o.log.push(str);
    }
  }
}

2 个答案:

答案 0 :(得分:3)

你似乎在寻找

var o = {
  current: {
    set myVal(str) {
      o.log.push(str);
    }
  },
  log: []
};

但这可能是一个坏主意。

答案 1 :(得分:1)

我不认为这是一个好主意,但理论上你可以使用systemProp.http.proxyHost= myHost systemProp.http.proxyPort= myPort systemProp.http.proxyUser= myUser systemProp.http.proxyPassword= myPassword 的setter返回一个对象:



o.current