$ .noop()在jQuery 1.4中有什么实际用途?
关于jQuery 1.4的发布注释,我来到了acrosss $.noop()
,它是:
说明 :一个空的函数。 (在1.4中添加)
当你想传递一个什么都不做的函数时,你可以使用这个空函数。
也许我在这里错过了一些深刻的东西,但究竟是传递一个空函数的实际用法呢?
代码示例赞赏。
这个函数是由于embedded式系统使用$.ajax
时在jQuery-Dev邮件列表上报告的性能问题而提出的。 你可以看到线程 。
基本上,他们更喜欢引入和使用这个单一的空函数,而不是全面地声明空的匿名函数。
现在这个函数在ajax , event和offset模块内部使用。
当它被引入的时候你也可以看一下提交 。
如果你有一个函数接受一个函数作为参数,而你没有任何代码给它,你可以通过$.noop
。
不过,在jQuery中,参数不是可选的,我想不出任何这种情况。
不像写function(){}
,传递$.noop
不会创build一个新的函数实例,节省一点内存。 然而,如果你传递它来修改函数对象(例如, funcParam.id = 2
),传递$.noop
将会搞砸了。
真实世界的例子(差不多):
jQuery.fn.myAwesomeAjax = function(url, complete) { return jQuery.ajax(url || this.url) .complete(complete || jQuery.noop); };
用它来代替function (){}
也许如果一些糟糕的API需要一个函数作为参数,并且你不想做任何事情,那么这将是一个框架支持的方式。
我使用了一些需要callback的插件,但是对于某些部分我实际上并不想使用某个callback。 所以,我把函数(){}。
noop在jQuery源代码中定义为
noop: function() {}
所以它将适合任何你使用空白函数的地方,比如上面的例子。
唯一合乎逻辑的原因是如果你正在调用一个函数来调用另一个函数,而你希望这个更高级的函数在不调用参数函数的情况下完成它的工作。
大多数的jQuery函数都可以select使用参数函数,所以你不需要传递参数函数。也许有一两个不是这样的情况 – 也许是为了帮助开发人员使用他们自定义的代码。
如果一个函数需要你传递一个函数作为参数,也许? do_something($.noop)
比do_something(function(){})
短。
虽然不是很多…
… 6个字符…
…是的,这个function实际上看起来很没用。
如果您有一个为其他function提供function的function,这会很有用。
例如:您有一个数据列表。 每个项目都有一个button,做一些事情。 每个项目的“东西”可以不同。 你有一个“FunctionFactory”接受该项目并返回一个函数。 如果你不想button做任何事情,那么最简洁的方法就是返回一个空的函数,这样你就知道Factory总是返回一个函数。
我没有一个jQuery的具体例子,但我想这可以派上用场.each或.map块中使用。
这纯粹是方便/取代function(){}
在需要callback的环境中 – 我不认为我会很快使用它。
我敢打赌,jQuery团队虽然放弃了它,但还是有喜剧的目的。