Javascript 解构以填充现有对象

Javascript destructuring to populate existing object

我使用的是 ES6 的 Object destructuring 语法。 我想用它来填充现有对象。

我得到了两个对象:

let $scope = {};
let email = { from: 'cyril@so.com', to: 'you@so.com', ... };

我想将一些 email 对象属性分配给 $scope 对象。

现在,我最终这样做了:

({ from: $scope.from, to: $scope.to } = email);

在我的实际使用案例中,我有两个以上的属性要分配。

那么,您是否知道另一种 改进 避免重复 左侧赋值部分中的 $scope 的方法?

你是对的,你可以这样做:

Object.assign($scope, email);

但是这不是不可变的,您实际上是在更改 $scope 对象(这在您的情况下很好)。如果你想要一个不可变的操作,这样做:

$scope = Object.assign({}, $scope, email);

这将 return 一个全新的对象。

此外,如果您在转译器中启用了 Object Rest Spread 功能,那么您可以这样做:

$scope = { ...$scope, ...email };

这也是不可变的,并在幕后使用 Object.assign