我遇到了一个 - 看起来 - 有点奇怪的问题。假设我有一个这样的 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
}
};
请参阅this fiddle进行演示。单击“开始”以启动计时器并更新值。如您所见,使用parseInt
也无济于事。
我已经在 Firefox、Chrome 和 IE10 中对此进行了测试。他们都表现出相同的行为。
为什么不能this
从另一个具有函数值的属性中引用具有数值的属性?为什么它适用于非数字值?这是一个错误还是这是故意的?
这不是一个真正的问题,因为我们可以简单地使用父对象的名称来更新数值,但我只是好奇为什么会这样。