【发布时间】:2018-03-01 19:15:02
【问题描述】:
我正在努力理解 javascript 的基本概念。如果我在下面的第 8 行中只使用“gear += 1”,下面的代码似乎工作正常,但我不明白为什么当我使用“this.gear += 1”时这不起作用。它给出的结果为 NaN。谢谢。
(function bike(speed, tank, gear) {
var i = {};
i.speed = speed;
i.tank = tank;
i.gear = gear;
i.addgear = (function() {
// works fine with "return gear+= 1" Why not with "this"?
return this.gear += 1;
})();
console.log("mybike", i);
})(120, 12, 5);
【问题讨论】:
-
您为什么希望
this能够工作?这一切看起来都不是class-y(包括ES5之前的JS OOP),所以我不太确定要解释什么。 -
您对 i.addgear 的关闭正在立即执行。
-
@EthanKaminski - 实际上,将
addgear的this设置为i是非常有意义的...除了OP 可能无意中分配了@987654321 的结果@ 到addgear而不是匿名函数。 -
@JDB - 是的,这正是我的观点。 addgear 的 this 应该充当我……但它没有……你能说出原因吗?
-
对于那些投票认为这是标准“
this如何工作”帖子的副本的人......这不是这个问题所问的,不是直接的,也不是那里的答案真的有帮助解释提供的代码有什么问题或如何获得所需的行为。
标签: javascript function methods