函数构造函数是否支持使用`this`计算属性?

时间:2017-10-11 01:05:21

标签: javascript

尝试测试≈

之类的东西
> function Computed(name, prop) {
... [this.prop]: name
... };
...    // but this doesn't work.

有没有办法正确地做到这一点?

3 个答案:

答案 0 :(得分:3)

计算属性仅在类主体或对象文字内部工作,而不在函数中工作(就像普通的属性定义一样)。但是你无论如何都不需要它们:你可以使用括号语法在实例上创建属性:

function Computed(name, prop) {
    this[prop] = name;
}

答案 1 :(得分:1)

计算属性{ [x]: y }是对象文字语法的一部分,但构造函数只是函数;您可以使用通常的括号表示法来引用其中包含动态名称的属性。

function Computed(name, prop) {
    this[name] = prop;
}

答案 2 :(得分:0)

要使用计算属性在this设置属性,您可以使用Object.assign(),首先将this作为第一个参数传递

function Computed(name, prop) {
  // this.prop = "abc";
  Object.assign(this, {[this.prop]:name});  
};