Jquery.extend与Object.assign

插曲

说到Jquery.extend就想到$.fn.extend,两者区别大了

前者可以把对象参数里的值加到jquery这个变量上,后者是把值加到jquery实例化后的对象上($.fn===$.prototype哦)。所以后者用于给jq扩展插件用的。

正言

$.extend一般情况下用起来跟Object.assign没什么不同
作用就是简单的便利每个对象参数里的key,相同则以后面对象参数(b)的key对应的value值覆盖前面(a)的key对应的value值。
这种方法经常被来用实例化组件时填写自定义的option来替换默认的option。(没听过的话,这里有个jq插件的源码,https://github.com/alvarotrigo/pagePiling.js/blob/master/jquery.pagepiling.js ,看到里面$.extend的应用就会明白了)。
如何你有看上面插件的源码,你会发现有点不一样的地方:$.extend(true,xxx,xxx)

没错,这次第一个参数为true后,对象参数不是简单的合并了,它会判断具体是哪里不一样,最后返回一个完整的对象(一般这才是我们想要的)。想写这篇文章也是从这插件的源码有感而来
那么利用Object.assign怎么实现该效果呢
刚写了个:
https://github.com/Newbit13/pika/blob/master/trueAssign.js
没事赞一下呗。

再附上一篇文章,lodash没怎么用过,所以给大家看看就好Lodash 中 assign,extend 和 merge 的区别

发表评论

电子邮件地址不会被公开。 必填项已用*标注