<分区>
var foo = {
data: "a",
print: function() {console.log(this.data)}
}
element.addEventListener("click", function(){foo.print()});
在这种情况下上下文是 foo 对象
element.addEventListener("click", foo.print);
在这一个中它是 element
为什么会这样?
<分区>
var foo = {
data: "a",
print: function() {console.log(this.data)}
}
element.addEventListener("click", function(){foo.print()});
在这种情况下上下文是 foo 对象
element.addEventListener("click", foo.print);
在这一个中它是 element
为什么会这样?
最佳答案
this
的值由调用函数的方式决定。在第一种情况下,“print”函数是通过对象“foo”的属性引用调用的。因此,this
的值是对该对象的引用。
在第二种情况下,您在设置事件处理程序时已将对“打印”函数的引用传递给系统。调用事件处理程序时将 this
设置为引用事件中涉及的元素。
在您的第一个示例中,匿名函数中 this
的值也将是对被单击元素的引用。如果您愿意,可以将其传输到“打印”功能:
element.addEventListener("click", function(){ foo.print.call(this); });
关于javascript - 为什么 "this"会得到不同的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21968886/