为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

喵喔喔 2019-08-19 10:56:45
是否有可能对现有物体进行构造?(Javascript ES6)例如,如果我有两个对象:var foo = {   x: "bar",   y: "baz"}和var oof = {}我想将x和y值从foo转移到oof。有没有办法使用es6解构语法?也许是这样的:oof{x,y} = foo
查看完整描述

3 回答

?
catspeake

TA贡献1111条经验 获得超0个赞

虽然丑陋而且有点重复,但你可以做到

({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]);

虽然。


查看完整回答
反对 回复 2019-08-19
?
胡说叔叔

TA贡献1804条经验 获得超8个赞

不,解构不支持shorthands中的成员表达式,但是当前时只支持普通的属性名。目前已经谈关于这样的esdiscuss,但不建议将它做成ES6。

Object.assign然而,您可以使用- 如果您不需要所有属性,您仍然可以使用

var foo = …,
    oof = {};{
    let {x, y} = foo;
    Object.assign(oof, {x, y})}


查看完整回答
反对 回复 2019-08-19
?
红糖糍粑

TA贡献1815条经验 获得超6个赞

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 otherObject

Object.assign(otherObject, newObject);

我将此用于POST请求很多,我只需要一些离散数据。但是,我同意应该有一个班轮来做这件事。


查看完整回答
反对 回复 2019-08-19
  • 3 回答
  • 0 关注
  • 345 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号