在某些情况下,this关键字可能不会引用我期望的对象.(最近的例子:在关键事件中,在我的XBL中)
避免这种错误的最佳方法是什么?
现在,我总是使用$.fnjQuery来存储我的变量,但我不确定它是否是最好的方法.
Ivo*_*zel 10
了解如何以及为何如此this行事,然后阅读您正在处理的代码.
不要相信某些神奇的功能,如果您不了解/阅读代码,您可能总会得到意想不到的结果.
对于这个"问题",根本没有一个很棒的解决方案.
不要避免使用这个。只要以正确的方式使用它即可。Javascript 是一种基于原型的面向对象语言。如果您使用对象原型创建对象,则应该始终知道 this 指的是什么。
jQuery.fn 与jQuery.prototype. jQuery.fn只是一个别名。您还可以使用instanceof 检查this 关键字。
this instanceof jQuery
Run Code Online (Sandbox Code Playgroud)
apply另一种常见的做法是调用方法并使用或函数方法绑定当时的上下文call。这将保证函数的this上下文。
这是一个简单的例子。
var div = document.getElementById('div1');
function sayId(){
alert(this.id);
}
sayId.call(div); // alerts div1
Run Code Online (Sandbox Code Playgroud)
call 方法的第一个参数绑定this上下文并运行该函数。
知道如何控制和检查 this是避免常见错误的最好方法。