最前端

我的工作,我的生活,点点滴滴...

标签 ‘ object

重温Javascript对象的深度克隆

Javascript对象的赋值是传址的,新对象的改变,会改变原对象,而有时,我们只是想要一个与原对象毫无关联但一模一样的新对象,就如同克隆一样。下面记录一下,深度克隆对象的一个方法:

	/**
	* 深度克隆一个对象
	* @param {Object} o 被克隆的对象
	* @return {Object} 返回克隆对象
	*/
	function  clone(o) {
	function  Clone() {
	}
 
	Clone.prototype = o;
	var  n =  new  Clone();
	for ( var  a  in  n) {
	if ( typeof  n[a] ==  "object" ) {
	n[a] = clone(n[a]);
	}
	}
	return  n;
	}

你还可以用下面的demo测试一下,首先选用不用的“产生新对象方式”,然后试着修改新对象的值,看看原对象值的变化。

object-clone

产生新对象方式: