这是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,很明了.
个人总结
$.extend 主要用于 在自己写插件时 替换 默认的参数,来达到让用户自定义的目的 (目前只想到这么多)