【发布时间】:2013-11-09 06:34:58
【问题描述】:
我有这样的代码:
(function() {
$(document).ready(function() {
//event handlers
$('.project-delete').on('click', function() {
deleteProject($(this));
});
$('.keyword-delete').on('click', function() {
deleteKeyword($(this));
});
this.deleteKeyword = function(model) {
}
}).call(this);
我很好奇这是否是一个好方法,因为我最近在学习 JS,据我所知,这个函数将具有全局范围,不是吗?因为.call(this) 正在将窗口对象传递给这个闭包,那么我认为这不是最好的选择?有什么我想念的吗?将 .call(this) 更改为 () 会改变什么吗?
编辑:那么将窗口对象传递给该闭包是否可以?只传递一个空对象或 jQuery 对象不是更好吗?
【问题讨论】:
-
它将闭包的上下文显式绑定到父上下文。同
(function(){ }).apply(this) -
请注意,我将“范围”定义为函数可以访问的变量(即,它自己的局部变量加上它嵌套在其中的任何函数的变量),这与函数无关处理
this的值。 -
@nnnnnn 那么将 jQuery 对象(或者可能只是空对象)应用到它以提高性能不是更好的选择吗?如果这指向本地范围,它不会提高性能吗?由于窗口对象非常慢。在这里我不需要表演,但我只是好奇它是否是调用这个函数的好方法。
标签: javascript jquery