企业🤖AI Agent构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
# 深浅拷贝 ## hasOwnProperty > hasOwnProperty() 方法会返回一个布尔值,指示对象**自身属性**中是否具有指定的属性 ## 浅拷贝 ~~~ function shallowClone(obj) { if (typeof obj !== 'object') { return } var cloneItem = Array.isArray(obj) ? [] : {}; for (var i in obj) { if (obj.hasOwnProperty(i)) { cloneItem[i] = obj[i]; } } return cloneItem; } ~~~ 使用es6实现浅拷贝就很容易了: ~~~ // 浅拷贝 ES6 API (不拷贝不可枚举属性,不拷贝继承属性) var newObj = Object.assign({}, a); // 暂不考虑数组 // 浅拷贝 ES6 扩展运算符 (等同于以上) var newObj2 = { ...a }; // 暂不考虑数组 ~~~ ## 深拷贝 ~~~ function deepCopy(obj) { if (typeof obj !== 'object') { return; } var cloneItem = Array.isArray(obj) ? [] : {}; for (var key in obj) { if (obj.hasOwnProperty(key)) { cloneItem[key] = typeof obj[key] === 'object' ? deepCopy(obj[key]) : obj[key]; } } return cloneItem; } ~~~