jQuery中的 $.extend() 和 $.fn.extend() ANGWH 于 2020-05-24 06:39:59 发布
注意:$.extend是为jQuery类添加添加类方法,用$.调用(类似$.ajax),$.fn.extend则是为jQuery对象添加方法(实例方法),用DOM元素调用
文章标签: jquery 版权 $.extend() 和 $.fn.extend() 这两个方法都是给jQuery进行拓展,开发jQuery插件时经常使用 在jQuery源码中,你会看到关于这两个方法的代码的第一行是这样的 jQuery.extend = jQuery.fn.extend = function(){} 1 可以看出两个方法共用的是同一个函数体,所有的操作都是一样的,只不过两个方法使用的对象不同。 $.extend是为jQuery类添加添加类方法,可以理解为添加静态方法(工具方法) $.extend({ min: function(a, b) { return a < b ? a : b; }, max: function(a, b) { return a > b ? a : b; }, add: function(a, b) { return a + b } }); // 调用 $.min(2,3); // 2 $.max(4,5); // 5 $.add(5,5); // 10 1 $.extend() 也提供了深度拷贝的方法 var obj = { name:'哈哈', score:80 }; var obj1 = { name:'嘻嘻', success:'A', score:{ Chinese:100, math:90 } } $.extend(true, obj, obj1); console.log("obj" , obj); console.log("obj1" , obj1); obj.score.Chinese = 10; console.log(obj.score.Chinese); // 10 console.log(obj1.score.Chinese); // 100 1 后者的内容克隆到前者,属性重名的直接覆盖,修改属性值互不干扰。 $.fn.extend则是为jQuery对象添加方法(实例方法) 查看jQuery源码也可以发现 jQuery.fn = jQuery.prototype = {} 1 可以明显的看到就是为jQuery的原型添加新的属性和方法。 $.fn.extend({ toWidth: function() { this.width(function(index,width){ return width + 10 }).css({ backgroundColor : 'green' }); } }); // 使用新创建的.check() 方法 $(".box").click(function(){ $(this).toWidth(); }) 1 $.fn.extend()也有克隆,浅层克隆和深层克隆都有,互不影响。 浅层克隆 $.fn.extend( obj, obj1); obj.score.Chinese = 10; obj1.score.math= 50; 1 深层克隆 $.fn.extend(true, obj, obj1); obj.score.Chinese = 10; obj1.score.math = 50; 1 ———————————————— 版权声明:本文为CSDN博主「ANGWH」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/ANGWH/article/details/106307307
标签:jQuery,obj1,obj,extend,score,fn From: https://www.cnblogs.com/webSnow/p/17089165.html