微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

关于jq中的$.extend()跟$.fn.extend()区别

一、$.extend()的用法

  1.为扩展jQuery类本身,为自身添加新的方法

  $.extend({

  min:((a,b) => a > b ? b : a ),

  max:((a,b) => a > b ? a : b )

  })

  $.min(3,5) //只有jq本身能用,

    2.对象的扩展

  a.这个用法跟ES6的object.assign()方法类似,扩展或复制一个对象,看例子

  var obj1 = {a:1,b:2}

  var obj2 = {c:5,a:4}

  $.extend({},obj1,obj2) //{a: 4,b: 2,c: 5}

  

  b. extend()第一个参数boolean代表是否进行深度拷贝,一般认false,可以省略不写。为true代表深度拷贝

  

  var result1=$.extend( true,{},
    { name: "John",location: {city: "Boston",county:"USA"} },
    { last: "Resig",location: {state: "MA",county:"China"} }
  );
  console.log(111,result1)//
  var result2=$.extend( {},county:"China"} }
  );
  console.log(222,result2)
  

分享图片

 

  可以看到第一个参数为false的时候,对象直接被覆盖,为true的时候,对象是被合并了。

二、$.fn.extend()把对象挂载到了jq的原型(jQuery.prototype)上,为jq实例添加方法

  (function($){
    $.fn.extend({
      speak:function(){
        alert("how are you!");
      }
    });
  })(jQuery);
  <div id="div">测试</div>
  $(‘#div‘).speak()
 
  大部分插件都是用jQuery.fn.extend()

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐