Javascript解构以填充现有对象

时间:2016-02-08 02:31:26

标签: javascript ecmascript-6 destructuring

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

我有两个对象:

public int calcCRC(byte[] bitPlane) {

            crc = 0;

            for (int i = 0; i < bitPlane.length; i++) {
                byte element = bitPlane[i];
                crc ^= (element << 8);
                for (int j = 0; j < 8; j++) {
                    boolean carry = ((crc & 0x8000) != 0);
                    crc <<= 1;
                    if (carry) {
                        crc ^= 0x1021;
                    }
                }

            }


            return crc;

        }

我想为let $scope = {}; let email = { from: 'cyril@so.com', to: 'you@so.com', ... }; 对象分配一些email对象属性。

目前,我最终还是这样做了:

$scope

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

那么,您是否知道另一种方法改善避免重复左侧分配部分中的({ from: $scope.from, to: $scope.to } = email);

1 个答案:

答案 0 :(得分:1)

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

Object.assign($scope, email);

然而,这不是不可变的,你实际上是在改变$ scope对象(在你的情况下这很好)。如果你想要一个不可变的操作,请执行以下操作:

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

这将返回一个全新的对象。

此外,如果您在转换器中启用了Object Rest Spread功能,那么您可以执行此操作:

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

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