jQuery应用问题

这两种写法有什么不同:1、+function($){$.functionname=function(){...}}(jQuery);2、jQuery.extend({fu... 这两种写法有什么不同:
1、+function ($) { $.functionname = function(){...} }(jQuery);
2、jQuery.extend({ functionname : function(){...} })
展开
 我来答
森林的沉睡
2016-12-01 · TA获得超过297个赞
知道小有建树答主
回答量:179
采纳率:85%
帮助的人:156万
展开全部

这个有趣, 我想了下发表下我的拙见:

从作用上看:

1和2实际上都是把functionname扩张到了jQuery对象上, 因此都可以直接调用jQuery.functionname()

从返回值上看:

前者执行后返回Nan, 后者返回jQuery对象, 据说匿名函数的调取用+比!或者直接new一个的效率快很多.

从目的上看:

前者更适合于插件编写, 后者更适合于静态工具封装, 1中括号内的内容是函数体, 允许定义变量或者做分支等判断, 比如

+function ($) { 
    $.myfunction1 = function(){console.log(1)};
    var myVar = 'init', myName = 'sleest';
    $.myfunction2 = function(console.log(myVar));
}(jQuery);

虽然使用第二种方法将myVar和myName一起放到jQuery对象中去也是可以, 但总归不灵活并且覆盖的可能性大大增加, 因此我认为1方案更适合与插件封装, 2一般只适用于静态工具的封装, 以上.

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式