js拷贝对象
来源:互联网 发布:大数据hadoop 编辑:程序博客网 时间:2024/05/21 07:09
完整代码:
function copyObject(orig) {
var copy=Object.create(Object.getPrototypeOf(orig));
copyOwnPropertiesFrom(copy,orig);
return copy;
}
function copyOwnPropertiesFrom(target,source){
Object.getOwnPropertyNames(source).forEach(function(propKey){
var desc=Object.getOwnPropertyDescriptor(source,propKey);
Object.defineProperty(target,propKey,desc);
});
return target;
};
详解:
为了创建一个对象的完整拷贝,你需要确保两件事;
1、拷贝必须有原来对象相同的原型
2、拷贝必须具有原来对象相同的属性和特性
下面的函数实现了这两步骤
function copyObject(orig) {
//实现第一步
var copy=Object.create(Object.getPrototypeOf(orig));//实现第二步
copyOwnPropertiesFrom(copy,orig);
return copy;
}
下面的函数实现了剩余的小部分细节
1、获得source所有自有属性键的数组
2、遍历这些键
3、获取属性描述符
4、使用属性描述符常见target的自有属性
function copyOwnPropertiesFrom(target,source){
Object.getOwnPropertyNames(source) //实现第一步 .forEach(function(propKey){ //实现第二步
var desc=Object.getOwnPropertyDescriptor(source,propKey); //实现第三步
Object.defineProperty(target,propKey,desc); //实现第四步
});
return target;
};
- js拷贝对象
- js深拷贝对象
- JS对象深度拷贝
- JS对象深拷贝
- js对象深拷贝
- js 对象浅拷贝和深拷贝
- js对象浅拷贝与深拷贝
- js对象深拷贝和淺拷贝
- js 对象浅拷贝、深拷贝
- js对象的深层 拷贝
- JS对象的深拷贝
- js实现对象深度拷贝
- js数组、对象深拷贝
- js 对象的深拷贝
- js对象的深浅拷贝
- js对象之深浅拷贝
- js对象深拷贝和对象扩展
- js对象或json对象深拷贝
- Android-动画基础合集
- Uva 11134 问题分解,贪心策略区间选点问题
- Java for Web学习笔记(三十):JSTL(6)FMT Tag(下)
- 杂花生树(八)
- Web前端面试指导(二十八):什么是闭包,为什么要用它?
- js拷贝对象
- ArrayList、Vector与LinkedList的区别?
- 发送IP封包到高层协议
- 多元线性回归、梯度下降法、正规方程法简单实验
- 洛谷P1629 邮递员送信
- 第三章 例题三 阿格斯(自定义优先队列)
- 通过keepalived搭建LVS高可用集群
- OpenProcessing代码收集1
- python的hash模块