关于$.extend和$.fn.extend

关于这两个方法,在看到面试题的时候,我是完全完全没有印象的(jq白学了)。。

具体还是在写浅拷贝的时候,在用object.assign的时候,看到一篇博主提到了$.extend,我才想起来,好像确实应该把这个知识点补充一下。

$.extend

这里提一嘴,关于$.extend的作用,有大佬直接在帖子里写:jQuery.extend(object);为扩展jQuery类本身.为类添加新的方法。好吧,这没错,不过我估计大多数萌新应该和我一样,完全没办法把这个和浅拷贝联系在一起吧。

$.extend,在菜鸟里,有更加浅显易懂的说法:jQuery.extend() 函数用于将一个或多个对象的内容合并到目标对象。也就是说,$.extend()方法提供的原始功能并不是仅有扩展jq类本身,还有合并对象。

在$.extend中,参数共有三个:Boolean, target, [, objectN ]。第一个参数可选,提供一个布尔值来决定方式是否深度合并对象,默认为false。第二个target为目标对象,意思是后续所有的对象全部合并进该对象中,objectN指被合并的N个对象。

所以本质上,extend是用来合并对象的,他的用法和assign非常类似。那么他究竟如何实现扩展jq类本身?原因在三个参数中,target目标参数是可以被省略的,这时候target就默认为jQuery对象本身。所以这时候,后续对象就会合并进入jQuery,因此可以用来为全局对象$添加新函数。

$.fn.extend

既然写了$.extend,不写$.fn.extend总感觉少了什么。

先说$.fn是啥?这里写个代码应该就一目了然了:

因此,其实就是原型。所以$.fn.extend就是为原型添加多个实例方法或属性。

总结:

1.$.extend可以实现和object.assign同样的功能。

2.$.extend为jQuery添加静态方法。$.fn.extend为jQuery添加实例方法

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容