2017-10-11 114 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