Object

Object.assign()

Object.assign() 方法用于将所有可枚举属性的值从一个或多个源对象分配到目标对象。它将返回目标对象。

Object.assign() 拷贝

  1. const source={
  2. a: 1,
  3. get b(){
  4. console.log('执行了')
  5. return 2;
  6. }
  7. }
  8. console.log(Object.assign({},source))

image.png
从上面可以看出,get并没有被复制出来,这个时候我们可以写一个方法来实现完全的拷贝

  1. const source1={
  2. a: 1,
  3. get b(){
  4. console.log('执行了')
  5. return 2;
  6. }
  7. }
  8. const source2={
  9. c:2,
  10. get d(){
  11. return 3
  12. },
  13. set d(value){
  14. }
  15. }
  16. Object.myAssign=function(target,...sources){
  17. sources.forEach((source)=>{
  18. const descriptors1=Object.keys(source).reduce((descriptors,key)=>{
  19. descriptors[key]=Object.getOwnPropertyDescriptor(source,key);
  20. return descriptors;
  21. },{});
  22. Object.defineProperties(target,descriptors1);
  23. })
  24. return target;
  25. }
  26. const res=Object.myAssign({},source1,source2);
  27. console.log(res)

image.png