【发布时间】:2016-05-01 01:17:56
【问题描述】:
我正在用 JavaScript 阅读 this 上的精彩 article。作者说下面的代码不好:
Cart = {
items: [1,4,2],
onClick: function () {
// Do something with this.items.
}
}
$("#mybutton").click(Cart.onClick);
他说click 事件在调用 onClick 时不知道Cart 对象,因此this.items 不会是我期望的[1,4,2] 数组。
作者接着说这段代码创建了一个闭包并修复了它,但我不明白下面的代码是如何解决这个问题的。
$("#mybutton").click(function () { Cart.onClick() });
1) 如果我们使用第一个示例,this 在什么情况下(如果不是Cart)会发生什么。
2) 为什么第二个例子解决了这个问题?
【问题讨论】:
-
@JonathanLonowski:为什么不回答这个问题呢? :)
-
我建议阅读以下来源:github.com/getify/You-Dont-Know-JS/blob/master/…, developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…。当你理解
this,你就会理解这些例子。
标签: javascript jquery closures