function extend() { //extend 浅拷贝实现
var name,options,copy,
length = arguments.length,
i = 1,
target = arguments[0] || {}; //取目标对象
if(['object','function'].indexOf(typeof target) < 0){
target = {};
}
for(;i<length;i++){
options = arguments[i]
if(options != null){ //排除空参数的情况 extend({},,)
for(name in options){ //遍历对象 赋值
copy = options[name];
if (copy !== undefined) {
target[name] = copy;
}
}
}
}
return target
}
//测试数据
var test1 = {
a : 1,
b : {
c : 2,
d : 3
},
e : [1,'a']
},
test2 = {
b : {
c : 4,
d : 5,
f : 6
},
e : [1,'a'],
g : 7
}
var test = extend({},test1,test2);
console.log(test.b.d); //5
test2.b.d = 'x'; //修改test2
console.log(test.b.d); // 'x' test随之修改
function extend() { //extend 深拷贝实现
var name,options,src,copy,
deep = false, //是否深拷贝 默认为false
length = arguments.length,
i = 1,
target = arguments[0] || {};
//如果第一个参数为boolean类型,赋值给deep
if(typeof target == 'boolean'){
deep = arguments[0];
target = arguments[i] || {}; //目标对象顺延
i++;
}
//如果target不是对象数据类型的话 target赋值为 {}
if(['object','function'].indexOf(typeof target) < 0){
target = {};
}
for(;i<length;i++){
options = arguments[i];
if(options != null){
for(name in options){
copy = options[name];
src = target[name];
if(target === copy){ //避免重复循环
continue;
}
if(deep && copy && (typeof copy == 'object')){ // 类型判断
src = Object.prototype.toString.call(copy) == '[object Array]' ? [] : {}; //区分数组和‘对象'
target[name] = extend(deep,src,copy);
}else {
if (copy !== undefined) {
target[name] = copy;
}
}
}
}
}
return target
}
机械节能产品生产企业官网模板...
大气智能家居家具装修装饰类企业通用网站模板...
礼品公司网站模板
宽屏简约大气婚纱摄影影楼模板...
蓝白WAP手机综合医院类整站源码(独立后台)...苏ICP备2024110244号-2 苏公网安备32050702011978号 增值电信业务经营许可证编号:苏B2-20251499 | Copyright 2018 - 2025 源码网商城 (www.ymwmall.com) 版权所有