我遇到了 - 看起來有點奇怪的問題。比方說,我有一個JavaScript對象像這樣的:在JavaScript中引用一個帶有數值的對象屬性
var Object = {
Property1: 0,
Property2: 1,
TxtProperty: "Sample text",
Update: function() {
this.Property1++; // Doesn't work
Object.Property2++; // Does work
this.TxtProperty = "Hello world"; // Does work
$('#prop-1').text(this.Property1); // Prints NaN
$('#prop-2').text(Object.Property2); // Prints correct value
$('#txt-prop').text(this.TxtProperty); // Prints correct value
}
};
See this fiddle了演示。點擊「開始」以啓動計時器並更新值。正如你所看到的,使用parseInt
也沒有幫助。
我已經在Firefox,Chrome和IE10中測試過了。他們都表現出相同的行爲。
爲什麼不能使用this
從具有函數值的另一個屬性中引用具有數值的屬性?爲什麼它可以與非數字值一起工作?這是一個錯誤還是這是打算?
這不是一個真正的問題,因爲我們可以簡單地使用父對象的名稱來更新數值,但我只是很好奇爲什麼這樣。
我覺得'this'會參考Window的使用方式。不是父對象。 –
但是當然'this.TxtProperty'也不應該。 – Knelis
它工作是因爲它創建了一個新的'window.TxtProperty'屬性。 – Barmar