extend
用来枚举属性的对象工具函数
/*
* 把p中的可枚举属性复制到o中,并返回o
* 如果o和p中含有同名属性,则覆盖o中的属性
* 这个函数并不处理getter和setter以及复制属性
*/
function extend(o,p) {
for(prop in p) {
o[prop] = p[prop];
}
return o;
}
$.extend(为jquery类添加静态方法)
> extend(result, item1, item2, ...)
该方法将所有的参数项都合并在result中,并返回result,破坏result的结构
> extend({}, item1, item2, ...)
将所得的结果全部合并在{}中
let item={name:"zhangsan",age:23};
let item1={name:"lisi",sex:"gril"};
let result=$.extend({},item,item1);
结果:Result={name:"lisi",age:23,sex:"gril"};
> extend(bool,{},item1,item2….)
bool:true 深拷贝
bool:false 浅拷贝
* eg:
let item={name:"zhangsan",age:23, address:{ provice: "安徽",city: "合肥" }};
let item1={name:"lisi",sex:"gril", address:{ city: "北京" }};
let result1 = $.extend(true,item,item1);
let result2 = $.extend(false,item,item2);
结果:
result1 = {name: "lisi", age:23, address: {provice:"安徽",city: "北京"}, sex: "gril"}
result2 = {name: "lisi", age: 23, address: {city:"北京"}, sex: "gril"}
> $.extend(item)
该方法是将item合并到jquery的全局对象中,类似为jquery全局对象添加一个静态方法
$.extend({
say: function(val) { console.log(val); }
})
$.say("emmmm");
> $.fn.extend(item)
该方法为每一个实例添加一个实例方法
$.fn.extend({
say: function(val) { console.log(val); }
})
$("#id").say("emmmm");