首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Object.assign {}和Object.Assign []是否有区别?

Object.assign {}和Object.Assign []是否有区别?
EN

Stack Overflow用户
提问于 2018-05-31 14:24:29
回答 2查看 59关注 0票数 1

我正在查看一个已经退役的开发人员的一些旧代码,注意到他有时会使用

代码语言:javascript
复制
Object.assign({}, xyz) 

还有其他他用的

代码语言:javascript
复制
 Object.assign([], abc);

这两者有什么区别吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-05-31 14:28:01

是的,是有区别的。一个将值分配给一个新对象,另一个将值分配给一个新数组。

在这里查看输出并与实际浏览器控制台中的输出进行比较。

代码语言:javascript
复制
var abc = {foo:"bar"};

var r1 = Object.assign({},abc);
var r2 = Object.assign([],abc);

console.log(r1);
console.log(r2);

第二个没有做的是向数组中添加一个新项--它的长度仍然是0。

票数 3
EN

Stack Overflow用户

发布于 2018-05-31 14:44:56

Object.assign是一个函数,它将可枚举的自身属性从一个对象复制到另一个对象(称为目标),并返回目标对象。因为数组也是对象,所以您也可以将属性复制到它们,但是,它们在迭代过程中不会出现。

以下面的片段为例:

  • objobject
  • arrobject,但也是array
  • arr.a为1
  • arr.forEach不打印a

代码语言:javascript
复制
const obj = Object.assign({}, {
  a: 1,
  0: 2
});
const arr = Object.assign([], {
  a: 1,
  0: 2
});

console.log(typeof obj);
console.log(typeof arr);

console.log(Array.isArray(arr));

console.log(obj);

console.log(arr);
console.log(Object.keys(arr));
console.log(arr.a);

arr.forEach((item, idx) => console.log(`${idx}: ${item}`));

// To test the question in the comments

let copiedObj = { a: 123 };

let copy = Object.assign({}, copiedObj);

console.log(copy);

copiedObj = [];

console.log(copiedObj);
console.log(copy);

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50626618

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档