1.下面的方法,是给Object的原型(prototype)添加深度复制方法(deep clone)。 1Object.prototype.clone =function() {2//Handle null or undefined or function3if(null==this|| "object" !=typeofthis)4returnthis;5//Handle the 3 simple types, Number and String and Boolean6if(thisinstanceofNumber ||th...
{"set": {},"map": {},"regex": {},"deep": {"array": [ {} ] },"error": {}, } 2. 使用递归 代码示例: functiondeepClone(obj) {if(obj ===null||typeofobj !== 'object') {returnobj; } let clone=obj.constructor();for(let attrinobj) {if(obj.hasOwnProperty(attr)) { clo...
function deepClone(obj) { if (obj === null || typeof obj !== 'object') { return obj; } let clone = obj.constructor(); for (let attr in obj) { if (obj.hasOwnProperty(attr)) { clone[attr] = this.deepClone(obj[attr]); } } return clone; } 优点:对于任何类型的对象都有效,...
functiondeepClone(obj){if(obj===null||typeof obj!=='object'){returnobj;} let clone=obj.constructor();for(let attrinobj){if(obj.hasOwnProperty(attr)){ clone[attr]=this.deepClone(obj[attr]);} }returnclone;} 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 优点:对于任何类型的...
"deep": { "array": [ {} ] }, "error": {}, } 2. 使用递归 代码示例: function deepClone(obj) { if (obj === null || typeof obj !== 'object') { return obj; } let clone = obj.constructor(); for (let attr in obj) { ...
function deepClone(obj) { if (typeof obj !== 'object' || obj === null) { return obj; } const newObj = Array.isArray(obj) ? [] : {}; for (let key in obj) { if (obj.hasOwnProperty(key)) { newObj[key] = deepClone(obj[key]); ...
function deepClone(obj) {if (obj === null || typeof obj !== 'object') {return obj;}let clone = obj.constructor();for (let attr in obj) {if (obj.hasOwnProperty(attr)) {clone[attr] = this.deepClone(obj[attr]);}}return clone;} ...
'[object Null]' : 'null', '[object Object]' : 'object' }; return map[toString.call(obj)]; } 实现deepClone 对于非引用值类型的数值,直接赋值,而对于引用值类型(object)还需要再次遍历,递归赋值。 function deepClone(data) { var t = type(data), o, i, ni; ...
"deep": { "array": [ {} ] }, "error": {}, } 2. 使用递归 代码示例: function deepClone(obj) { if (obj === null || typeof obj !== 'object') { return obj; } let clone = obj.constructor(); for (let attr in obj) { ...
'[object Undefined]': 'undefined', '[object Null]' : 'null', '[object Object]' : 'object' }; return map[toString.call(obj)]; } 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 实现deepClone