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
。
我使用的是 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
。