2017-10-11 108 views
2

试图测试类似≈函数构造函数是否支持用`this`计算属性?

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

有没有办法做到多好?

+0

这是什么'this'引用在问题的代码? '[this.prop]:name'的预期结果是什么? – guest271314

+0

@ guest271314,我只是想把这个词标记为代码相关的部分。 – JulyMorning

+0

注意,如果'this'是'window''''''''''''''''''''属性可能是一个字符串。 – guest271314

回答

1

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

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

计算性能的唯一一类机构或对象文本内工作,而不是功能(就像正常的属性定义不)。但你并不需要他们反正有:你可以用括号的语法在实例上创建属性:

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

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

​​
+0

Iteresting。然而,这只是一个智力练习,对吧?有些事情需要考虑,例如?有没有真实的情况来使用它,而不是@Bergi和Ryan的答案? – JulyMorning

+0

答案解决了问题语法的用法。您可以选择任一答案来获得相同的结果。如果不确定特定语法是否可用于设置对象的属性,则问题代码的目的是什么? – guest271314

相关问题