重温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测试一下,首先选用不用的“产生新对象方式”,然后试着修改新对象的值,看看原对象值的变化。
- 产生新对象方式:
近期评论