是否有可能对现有物体进行构造?(Javascript ES6)

是否有可能对现有物体进行构造?(Javascript ES6)

例如,如果我有两个对象:

var foo = {
  x: "bar",
  y: "baz"}

var oof = {}

我想将x和y值从foo转移到oof。有没有办法使用es6解构语法?

也许是这样的:

oof{x,y} = foo


喵喔喔
浏览 346回答 3
3回答

catspeake

虽然丑陋而且有点重复,但你可以做到({x: oof.x, y: oof.y} = foo);它将读取foo对象的两个值,并将它们写入oof对象上各自的位置。就我个人而言,我还是会读oof.x = foo.x;oof.y = foo.y;要么['x', 'y'].forEach(prop => oof[prop] = foo[prop]);虽然。

胡说叔叔

不,解构不支持shorthands中的成员表达式,但是当前时只支持普通的属性名。目前已经谈关于这样的esdiscuss,但不建议将它做成ES6。Object.assign然而,您可以使用- 如果您不需要所有属性,您仍然可以使用var foo = …,     oof = {};{     let {x, y} = foo;     Object.assign(oof, {x, y})}

红糖糍粑

IMO这是完成您所需要的最简单的方法:let { prop1, prop2, prop3 } = someObject;let data = { prop1, prop2, prop3 };  // data === { prop1: someObject.prop1, ... }基本上,解构为变量然后使用初始化程序简写来创建一个新对象。没必要Object.assign无论如何,我认为这是最可读的方式。您可以在此选择someObject您想要的精确道具。如果你有一个现有的对象,你只想将道具合并到,做这样的事情:let { prop1, prop2, prop3 } = someObject;let data = Object.assign(otherObject, { prop1, prop2, prop3 });    // Makes a new copy, or...Object.assign(otherObject, { prop1, prop2, prop3 });    // Merges into otherObject另一种可以说更清晰的写作方式是:let { prop1, prop2, prop3 } = someObject;let newObject = { prop1, prop2, prop3 };// Merges your selected props into otherObjectObject.assign(otherObject, newObject);我将此用于POST请求很多,我只需要一些离散数据。但是,我同意应该有一个班轮来做这件事。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript