Javascript的对象复制

[url]http://www.iteye.com/topic/1130308[/url]
var source={
a:10,
b:20,
c:'zhongguo',
d:['abcd','efg',10],
e:function(){
alert(1);
},

}
function copy(s,d){
if(s instanceof Object){
for(var p in s){
if(p instanceof Object){
copy(s[p],d[p])
}else{
d[p]=s[p]
}
}
}else{
d=s;
}
}
var d={};
copy(source,d)
console.info(d);
d.e();


[url]http://www.jb51.net/article/21202.htm[/url]
/* 
* @param {Object} target 目标对象。
* @param {Object} source 源对象。
* @param {boolean} deep 是否复制(继承)对象中的对象。
* @returns {Object} 返回继承了source对象属性的新对象。
*/
Object.extend = function(target, /*optional*/ source, /*optional*/ deep){
target = target ||
{};
var sType = typeof source, i = 1, options;
if (sType === 'undefined' || sType === 'boolean') {
deep = sType === 'boolean' ? source : false;
source = target;
target = this;
}
if (typeof source !== 'object' && Object.prototype.toString.call(source) !== '[object Function]')
source = {};
while (i <= 2) {
options = i === 1 ? target : source;
if (options != null) {
for (var name in options) {
var src = target[name], copy = options[name];
if (target === copy)
continue;
if (deep && copy && typeof copy === 'object' && !copy.nodeType)
target[name] = this.extend(src ||
(copy.length != null ? [] : {}), copy, deep);
else
if (copy !== undefined)
target[name] = copy;
}
}
i++;
}
return target;
};



测试代码
var source = {id:1, name:'Jack Source'}, target = {name:'Jack Target', gender:1,tel:{homeTel:"158255",officeTel:"02112585"}}; 
var newObj1 = Object.extend(target, source);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值