【问题标题】:Another way to achieve Object.Assign() in JavaScript在 JavaScript 中实现 Object.Assign() 的另一种方法
【发布时间】:2016-10-14 05:20:45
【问题描述】:
Object.assign(home, action.home.fields);

我将action.home.fields 分配给我的home 对象。发现 IE 不支持Object.assign

在 IE 中的支持与我正在做的事情等价的是什么?

我读了spread operator?也会:

home = {...home, ...action.home.fields};

工作?

我确实检查了对此的支持,也没有大量支持。

【问题讨论】:

标签: javascript


【解决方案1】:

这是 Object.assign() 的不太官方的 polyfill:

if (typeof Object.assign != 'function') {
  (function () {
    Object.assign = function (target) {
      'use strict';
      // We must check against these specific cases.
      if (target === undefined || target === null) {
        throw new TypeError('Cannot convert undefined or null to object');
      }

      var output = Object(target);
      for (var index = 1; index < arguments.length; index++) {
        var source = arguments[index];
        if (source !== undefined && source !== null) {
          for (var nextKey in source) {
            if (source.hasOwnProperty(nextKey)) {
              output[nextKey] = source[nextKey];
            }
          }
        }
      }
      return output;
    };
  })();
}

取自MDN

【讨论】:

  • 不是“官方的”,没有。只是 MDN,一个协作编辑的资源,非常好,但仍然会出错。
  • 这可能不是一个法律上的标准,但作为一个事实上的标准,它很受重视,所以从我的低位来看,它是“官方的”,我可以说 :)
  • :-) “备受推崇”和“官方”是非常非常不同的东西。我记得当 MDN 为 Array#forEach 提供了一个非常错误的 polyfill(是的,这是很久以前的事了)。
  • LOL 代表“不那么官方” :-)
最近更新 更多