【问题标题】:javascript - coping object elementjavascript - 应对对象元素
【发布时间】:2018-03-02 08:51:21
【问题描述】:

我正在尝试将名称从一个对象复制到另一个对象,如下所示:

console.log(this.source.name)

//给"mike"

mounted: function() {
   this.client.name = Object.assign({}, this.source.name)
}

然后

console.log(this.client.name)

//给对象1: m, 2: i, 3: k, 4:e

我做错了什么?我应该如何更正我的代码?

【问题讨论】:

  • @FedericoklezCulloca 也许但我不明白这个例子
  • Object.assign({}, 'mike') - 您如何期望生成的对象具有属性 mike 和值?
  • 伙计,为什么不只是this.client.name = this.source.namelol
  • @Dencio 你没看错

标签: javascript


【解决方案1】:

Object.assign 接受两个对象参数,但您将 string 传递给第二个参数。因此,如果您想分配字符串值,只需执行this.client.name = this.source.name

如果要复制对象值,请使用Object.assign 并将this.source.name 中的对象存储为this.source.name={"key":"value"};

【讨论】:

  • 这是正确的答案,可以使用对象分配,但在这种情况下不能使用。感谢您的宝贵建议
  • @gileneusz 只是控制台,然后在发生这种情况时检查文档。
  • 这有创建参考的缺点。更改this.source.namethis.client.name 也会更改。这可能需要或不需要,但应该注意。
  • 我不是说你做错了什么,我只是指出潜在的问题。
  • 感谢大家的宝贵讨论。我从中学到了很多,你们都是对的:)
【解决方案2】:

您可以使用以下调整:

this.client = Object.assign({}, this.client,  {name: this.source.name})

【讨论】:

  • 感谢您的回答,这也是正确的,可以用于对象元素内的数组 (?)
  • 不管this.source.name持有什么类型的数据。
  • 所以这种方式更通用。我将保持@AmanshuKataria 的答案正确,因为它更简单易用
【解决方案3】:

我会为此使用 ES6 spread operator 语法

const b = {iam b}
const a = {...b}
console.log(a) // {iam b}

【讨论】:

  • 如您所见,您一定漏掉了什么。
猜你喜欢
  • 2020-04-07
  • 2020-07-14
  • 2010-10-31
  • 2014-10-01
  • 2015-10-04
  • 1970-01-01
  • 1970-01-01
  • 2011-11-06
  • 1970-01-01
相关资源
最近更新 更多