Javascript - 这个vs窗口

时间:2014-10-24 14:34:28

标签: javascript syntax

如果可以,如果在函数中没有调用代码,你应该使用它代替窗口吗?

this.addEventListener(...);

vs

window.addEventListener(...);

这比较短2个字符,如果可以,最好使用吗?

5 个答案:

答案 0 :(得分:3)

我建议避免使用'this',除非通过callapplybind明确指定。这样,对this所指的内容一无所知。而且我也喜欢总是明确声明对全局对象的访问:

(function(global, document, undefined){
    global.myGlobalVar = 'foo';
})(window, document);

这种方式总是很清楚,当我做任何全局事务时,代码可以更容易地移植到非浏览器环境,如node.js,undefined将始终未定义等等。

如果您未明确全局访问权限并且必须稍后尝试查找,则后悔。如果你在全球注册一个事件处理程序(可能不是最好的主意),你肯定要记下它。

编辑:应该提到在严格模式下this在全局范围内未定义。

答案 1 :(得分:0)

thiswindow不是一回事。根据上下文,this可以引用任意数量的元素,而窗口始终表示窗口。

请参阅https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/this了解详情

答案 2 :(得分:0)

你正在寻找什么论点;或多或少地输入两个字符不是它。

这个和窗口是不同的东西。
'窗口'是整个网页。 '这'取决于你所处的职能。

答案 3 :(得分:0)

在Web浏览器的环境中,如果没有给出其他上下文,则this引用Window对象。
使用Window会使其不那么可疑,所以如果有必要,我会选择Window

请注意,出于性能原因,最好将eventlisteners添加到尽可能小的上下文中 如果只有部分DOM需要侦听事件,则无需在浏览器全局范围中添加eventlistener。

除了body元素上的事件监听器,用于删除例如。弹出窗口,我之前从未向Window对象添加eventlisteners。

答案 4 :(得分:0)

这是指您当前所在的任何代码块的父级。如果代码在click事件中,则“this”指的是调用该事件的控件。如果代码在页面加载时运行,则“this”指的是浏览器窗口。使用“窗口”可以使您所引用的内容更加明显,并使代码更具可读性。