IE中的Object.assign解决方法

时间:2018-06-28 13:43:17

标签: javascript angularjs ecmascript-6

我在angular应用程序的以下代码中使用ES6Object.assign可以在IE以外的任何地方正常工作。

const resetSuppItem = (item) => {
      Object.assign(vm.suppitem, _.pick($scope.item, ['item1', 'item2', 'item3']));     
    }

有什么变通办法,使其可以在IE中工作?

3 个答案:

答案 0 :(得分:2)

一种解决方法是使用jQuery方法extend(),该方法非常简单,并且可以在IE和Chrome中使用:

var user = {Name: 'Marshall', Surname: 'Depp'};
var newUserObj = $.extend({}, user);
    
newUserObj.Country = 'USA';
newUserObj.Mobile= 'xxxxxxxxxx';

console.log(user);
console.log(newUserObj);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>

答案 1 :(得分:0)

最好的选择是使用polyfill。如果不使用它,也许:

function newAssign(target) {
    for (var i = 1; i < arguments.length; i++) {
        var source = arguments[i];
        for (var key in source) {
            if (source.hasOwnProperty(key)) {
                target[key] = source[key];
            }
        }
    }
    return target;
}

答案 2 :(得分:0)

我的解决方案:

cp snapshot.backup-XXX/* SOLR_DATA/index/

与Object.assign()非常相似

示例:

function assign(target, ...sources) {
    var result = target;

    sources.forEach(function(source) {
    var keys = Object.keys(source);
    keys.forEach(function(key) {
        result[key] = source[key];
    });
});
    return result;
}