Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么可以';我只是通过传递它的变量名来运行这个回调,但是我可以把它包装成一个函数吗?_Javascript_Jquery - Fatal编程技术网

Javascript 为什么可以';我只是通过传递它的变量名来运行这个回调,但是我可以把它包装成一个函数吗?

Javascript 为什么可以';我只是通过传递它的变量名来运行这个回调,但是我可以把它包装成一个函数吗?,javascript,jquery,Javascript,Jquery,只是一个简单的问题。根据我目前的理解,以下两段代码是相同的,除了一段包含在函数中。为什么它与方法1一起工作,而不是与方法2一起工作?有什么区别 方法1: // Reset button $('.reset').button({ icons: {primary: 'ui-icon-closethick'} }).click(function(){groupList.change()}); 方法2: // Reset button $('.reset').button({ icon

只是一个简单的问题。根据我目前的理解,以下两段代码是相同的,除了一段包含在函数中。为什么它与方法1一起工作,而不是与方法2一起工作?有什么区别

方法1:

// Reset button
$('.reset').button({
    icons: {primary: 'ui-icon-closethick'}
}).click(function(){groupList.change()});
方法2:

// Reset button
$('.reset').button({
    icons: {primary: 'ui-icon-closethick'}
}).click(groupList.change);

编辑:JSFiddle:-注意点击“两个”会抛出错误
uncaughttypeerror:Object#没有方法“on”
,“一个”很好,如果
groupList.change
还不存在,但在稍后(但在用户点击之前)定义,那么就有区别了。如果以后重新定义,则相同

第一个代码解析为
groupList。单击时更改


第二个代码解析
组列表。立即更改

区别在于第一个代码将函数作为对象的方法调用,而第二个代码将函数作为独立函数调用

在第一种情况下,
将引用函数中的
组列表
对象,而在第二种情况下,
将引用全局
窗口
对象

如果调用一个函数,将其指定为对象成员,例如
obj.method(),它将作为方法调用。如果您获取对函数的引用并调用它,例如
var m=obj.method;m(),则该方法不再连接到对象



此外,正如Thilo指出的,第一个代码将在每次事件发生时查找该方法,而第二个代码将在事件绑定时查找该方法一次。

groupList.change是在什么时候出现的?你能在某个地方做一个自包含的最小示例吗?另外,这取决于groupList.change实际上在做什么。@Thilo-我现在就在这里。更重要的区别可能在@Guffa的答案中找到。