避免javascript"这个"错误的最佳方法

Tom*_*ito 5 javascript this

在某些情况下,this关键字可能不会引用我期望的对象.(最近的例子:在关键事件中,在我的XBL中)

避免这种错误的最佳方法是什么?

现在,我总是使用$.fnjQuery来存储我的变量,但我不确定它是否是最好的方法.

Ivo*_*zel 10

了解如何以及为何如此this行事,然后阅读您正在处理的代码.

不要相信某些神奇的功能,如果您不了解/阅读代码,您可能总会得到意想不到的结果.

对于这个"问题",根本没有一个很棒的解决方案.

  • +100我对"这个"是一个问题的想法感到不满,我不喜欢Crockford说服这么多人不使用它. (3认同)

Jos*_*ell 3

不要避免使用这个。只要以正确的方式使用它即可。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是避免常见错误的最好方法。