1
爲什麼創建一個名爲「構造函數」的鍵似乎改變了「this」的行爲?拿這個代碼,例如:爲什麼創建一個名爲「構造函數」的鍵似乎改變了「this」的行爲?
var O = {
constructor: function f1(){},
k2: function f2(){return this;}
};
console.log(O.k2());//logs "f1"
人們會認爲「這」將是「對象」,因爲它是一個對象中的文字,但如果我使用名稱「構造」作爲關鍵突然在函數內部它成爲「這個」。如果我嘗試了這一點,我得到「對象」:
var O = {
k1: function f1(){},
k2: function f2(){return this;}
};
console.log(O.k2());//logs "Object"
是否鍵值名「構造」有特殊的行爲,如_原_和原型?我真的不明白爲什麼「this」會附加到函數f1。
這是一個正常的行爲。從[** MDN **](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/constructor):*「返回創建對象函數的引用請注意,該屬性的值是對函數本身的引用,而不是包含函數名稱的字符串。「*。 – VisioN
我明白了,所以它覆蓋了已經存在的構造函數屬性(引導「this」引用的屬性)。這就是它的樣子。謝謝。我會更多地考慮這一點。 –