1.jQuery.fn.extend 与 jQuery.extend 区别?
理解为jQuery.extend 将合并后的对象添加在jQuery全局中;
jQuery.fn.extend 将合并后的对象添加在jQuery实例化的对象中;
有没有详细的实例化解释??
2.jQuery.extend([deep],src,obj1,obj2)?
1)
jQuery.extend(true,{city:'Bj',name:'Mark'},{city:'Sh',job:'Fe'});
jQuery,extend(false,{city:'Bj',name:'Mark'},{city:'Sh',job:'Fe'});
//true
return {city:'Sh',job:'Fe',name:'Mark'};
//false
return {city:'Sh',job:'Fe'};
当true时,可否理解为 有相同属性存在时保留?
2)
jQuery.extend(true,{city:'Bj',name:'Mark'},{color:'Red',job:'Fe'});
jQuery,extend(false,{city:'Bj',name:'Mark'},{color:'Red',job:'Fe'});
//true and false
return {color:'Red',job:'Fe'};
做个实验
可以看到,第一个参数
false
和第一个参数不是布尔型的情况是一样的。官方文档说,第一个参数
false
的时候如果想要只拷贝目标对象存在的属性,忽略不存在的的属性,请用 lodash。所以这里的false
的不带这个参数是一样的效果。如果是
true
表示深度拷贝,深度的意思就是,如果源对象中某个属性是对象,而将这个对象拷贝一份赋值,而不是简单的赋值其引用。上面实验中的c
就很说明问题了,c.props === a.props
的结果是false
,说明其props
属性是新建的一个对象。