$.extend
这是jq对象的方法 是一个静态方法 与$.fn.extend()无关
$.extend 简单两种用法
//浅
let extendTTT = $.extend( obj1, obj2); //
extendTTT = $.extend({}, obj1, obj2); console.log(extendTTT);
第一条 代码 改变了 obj1的结构 如果obj2里的属性与obj1的属性名相同就会覆盖obj1里的属性,通俗来讲 越靠后的参数,越牛X
第二条 代码 与第一条大致相同 {},代表 我不想改变结构,只不过生成了一个新对象,作用与第一条相同
//深度
let obj1 = { name: "xiaoming", // parents:{ // father:"xiaolv", // mother:"xiaoji", // grandfather:"dalvlvl", // }, parents: { hoa: ["xialv", "xiaoji", "aa"], pp: ["11"], }, sadasd: "asdasdsad", }; let obj2 = { name: "damingming", // parents:{ // father:"dalv", // mother:"daji", // }, parents: { bba: ["father", "mother", "grandfather"], cc: [1], hoa: [2], }, teett: "sadasd", };
//浅 let extendTTT = $.extend({}, obj1, obj2); console.log(extendTTT);extendTTT = $.extend(true, {}, obj1, obj2);
深拷贝
如果想要使用深拷贝,那么第一个参数 应该为true (浅拷贝 不用写false,默认就是),深拷贝 个人理解主要是用在 ,如果属性是对象,那么深拷贝会去覆盖这个对象的属性,并把添加obj1没有的属性,而浅拷贝 是直接覆盖了obj1的这个同名属性,主要对比 parents,很明了.
扫描二维码关注公众号,回复:
1786636 查看本文章
个人总结
$.extend 主要用于 在自己写插件时 替换 默认的参数,来达到让用户自定义的目的 (目前只想到这么多)