对象的拷贝

如果要拷贝一个对象,确保要做到以下两件事:

I.确保拷贝后的对象,与原对象具有相同的prototype原型对象

II.确保拷贝后的对象,与原对象具有相同的属性

function copyObject(orig){
        //具有相同的原型
	 var copy = Object.create(Object.getPrototypeOf(orig));
        //具有相同的属性
	 copyOwnPropertyFrom(copy,orig);
	 return copy;
}
        
        //属性copy
function copyOwnPropertiesFrom(target,source){
	Object
	    .getOwnPropertyNames(source)
	    .forEach(function(propKey){
			var desc = Object.getOwnPropertyDescriptor(source,propKey)
			Object.defineProperty(target,propKey,desc);
		});
}

1.获取所有source自身属性的数组,

2.遍历这些键,

3.获取属性描述符,

4.使用属性描述符创建target的自身属性。


 
 

猜你喜欢

转载自blog.csdn.net/qq_20165129/article/details/80070660