克隆javascript对象的三个方法小结
克隆javascript对象的三个方法小结
发布时间:2016-12-30 来源:查字典编辑
摘要:方法一复制代码代码如下:functionclone(obj){varo;switch(typeofobj){case'undefined':...

方法一

复制代码 代码如下:

function clone(obj){

var o;

switch(typeof obj){

case 'undefined': break;

case 'string' : o = obj + '';break;

case 'number' : o = obj - 0;break;

case 'boolean' : o = obj;break;

case 'object' :

if(obj === null){

o = null;

}else{

if(obj instanceof Array){

o = [];

for(var i = 0, len = obj.length; i < len; i++){

o.push(clone(obj[i]));

}

}else{

o = {};

for(var k in obj){

o[k] = clone(obj[k]);

}

}

}

break;

default:

o = obj;break;

}

return o;

}

方法二

复制代码 代码如下:

function clone2(obj){

var o, obj;

if (obj.constructor == Object){

o = new obj.constructor();

}else{

o = new obj.constructor(obj.valueOf());

}

for(var key in obj){

if ( o[key] != obj[key] ){

if ( typeof(obj[key]) == 'object' ){

o[key] = clone2(obj[key]);

}else{

o[key] = obj[key];

}

}

}

o.toString = obj.toString;

o.valueOf = obj.valueOf;

return o;

}

方法三

复制代码 代码如下:

function clone3(obj){

function Clone(){}

Clone.prototype = obj;

var o = new Clone();

for(var a in o){

if(typeof o[a] == "object") {

o[a] = clone3(o[a]);

}

}

return o;

}

推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
相关阅读
网友关注
最新Javascript教程学习
热门Javascript教程学习
编程开发子分类