当调用函数bar
时,“this”的行为让我感到困惑。请看下面的代码。是否有办法使“this”在从单击处理程序调用 bar 时成为一个普通的 JavaScript 对象实例,而不是成为 HTML 元素?
// a class with a method
function foo() {
this.bar(); // when called here, "this" is the foo instance
var barf = this.bar;
barf(); // when called here, "this" is the global object
// when called from a click, "this" is the html element
$("#thing").after($("<div>click me</div>").click(barf));
}
foo.prototype.bar = function() {
alert(this);
}
"this" 是 foo 实例。
下面的 jsfiddle(http://jsfiddle.net/yY6fp/1/) 演示了this
在this.bar()
中被评估为window
(全局)对象。 - Kevin Meredith