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

时间:2010-12-23 15:46:36

标签: javascript this

在某些情况下,this关键字可能不会引用我期望的对象。 (最近的例子:in an key event, in my XBL)

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

目前,我总是使用jQuery中的$.fn来存储我的变量,但我不确定它是否是最好的方法。

2 个答案:

答案 0 :(得分:10)

了解this行为的方式和原因,然后阅读您正在处理的代码。

不要相信某些神奇的功能,如果你不知道/不读代码,你可能总会得到意想不到的结果。

对于这个“问题”,没有一个很棒的解决方案。

答案 1 :(得分:3)

请勿避免使用。只是以正确的方式使用它。 Javascript是一种基于原型的面向对象语言。如果使用对象原型创建对象应始终知道它所指的内容。

jQuery.fn与jQuery.prototype相同。 jQuery.fn只是一个别名。您还可以使用instanceof检查this关键字。

this instanceof jQuery

另一种常见做法是使用applycall函数方法调用方法并在当时绑定上下文。这将保证函数的 this 上下文。

这是一个简单的例子。

var div = document.getElementById('div1');
function sayId(){
    alert(this.id);
}
sayId.call(div); // alerts div1

call方法的第一个参数绑定 this 上下文并运行该函数。

了解如何控制检查 this是避免常见错误的最佳方法。