2015-03-01 16:42 返回 Javascript中的深拷贝 javascript 1. 第一种实现方法123456789101112131415161718function copy (obj) { if (typeof obj !== 'object' || obj === null) { return obj; } var copyObj, _toString = Object.prototype.toString; if (_toString.call(obj) === '[object Object]') { copyObj = {}; } else if (_toString.call(obj) === '[object Array]') { copyObj = []; } for (var name in obj) { copyObj[name] = copy(obj[name]); } return copyObj;} 主要思路就是通过层层递归调用。 2. 第二种实现方法12345678910function copy (obj) { var copyObj = Object.create(Object.getPrototypeOf(obj)); var propNames = Object.getOwnPropertyNames(obj); propNames.forEach(function (name) { var desc = Object.getOwnPropertyDescriptor(obj, name); Object.defineProperty(copyObj, name, desc); }); return copyObj;} 主要是通过原生对象的关键方法实现。 < CSS中的BFC 常见的http方法介绍 >