jQuery.extend(object)和jQuery.fn.extend(object)区别和详解

1、认识jQuery extend()和jQuery.fn.extend()

jQuery的API手册中,extend方法挂载在jQuery和jQuery.fn两个不同对象上方法,但在jQuery内部代码实现的是相同的,只是功能却不太一样;

且看官方给出解释:
jQuery.extend(): Merge the contents of two or more objects together into the first object.(把两个或者更多的对象合并到第一个当中);
jQuery.fn.extend():Merge the contents of an object onto the jQuery prototype to provide new jQuery instance methods.(把对象挂载到jQuery的prototype属性,来扩展一个新的jQuery实例方法)

2、理解jQuery.extend()
可以把jQuery看成了一个类, 这个扩展也就是所谓的静态方法,只跟这个 类 本身有关。跟你具体的实例化对象是没关系的。

<!DOCTYPE html>
<html>
<head>
    <title>jQuery.extend()与jQuery.fn.extend()区别</title>
    <meta charset="utf-8">
    <script type="text/javascript" src="./jquery-1.8.3.js"></script>
    <script type="text/javascript">
        (function($){//(function($){}) (jQuery)在形参使用$,是为了不与其他库冲突,实参用jQuery,这里其实也是匿名函数
               $.extend({
                   speak:function(){
                       alert("how are you!");
                   }
               });
        })(jQuery);
    </script>
    <script type="text/javascript">
        $(document).ready(function(){
            $.speak();//属于jQuery这个类本身的方法
        })
    </script>
</head>
<body>
 
</body>
</html>

3、理解 jQuery.fn.extend()

jQuery.fn = jQuery.prototype = {
    init: function(selector, context) {
        //内容
    }
}

所以jQuery.fn.extend拓展的是jQuery对象(原型的)的方法啊!

对象是啥?就是类的实例化嘛,例如$("#abc") ,$(div)

<!DOCTYPE html>
<html>
<head>
    <title>jQuery.extend()与jQuery.fn.extend()区别</title>
    <meta charset="utf-8">
    <script type="text/javascript" src="./jquery-1.8.3.js"></script>
    <script type="text/javascript">
        (function($){
               $.fn.extend({
                   speak:function(){
                       alert("how are you!");
                   }
               });
        })(jQuery);
    </script>
    <script type="text/javascript">
        $(document).ready(function(){
            $("div").speak();
        })
    </script>
</head>
<body>
 
</body>
</html>

4、两者区别总结:

4.1、两者调用方式不同:
jQuery.extend(),一般由传入的全局函数来调用,主要是用来拓展个全局函数,如$.ajax(),$.init();
jQuery.fn.extend(),一般由具体的实例对象来调用,可以用来拓展个选择器,例如$.fn.each();

4.2、两者的主要功能作用不同:
jQuery.extend(object); 为扩展jQuery类本身,为自身添加新的方法。
jQuery.fn.extend(object);给jQuery对象添加方法

4.3、大部分插件都是用jQuery.fn.extend()

摘自:https://www.cnblogs.com/xuxiuyu/p/5989743.html

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值