Javascript - 对象传播 polyfill 是否有 cdn link?

Javascript - Is there a cdn link for the object spread polyfill?

我正在 javascript 中搜索对象展开运算符的 polyfill。有没有人有 cdn link 或者如果没有办法用 es5 javascript?

var i = {
  test: 123,
  test1: 5234
}

var b = {
  ...i,
  test3: 243
}

不,不可能。 Object spread 是 syntax,所以它不能被填充。只能填充新对象和方法,不能填充新语法。

但是,您可以使用 Babel 转译 代码:http://babeljs.io/

"use strict";

function _objectSpread(target) {
  for (var i = 1; i < arguments.length; i++) {
    var source = arguments[i] != null ? arguments[i] : {};
    var ownKeys = Object.keys(source);
    if (typeof Object.getOwnPropertySymbols === "function") {
      ownKeys = ownKeys.concat(
        Object.getOwnPropertySymbols(source).filter(function(sym) {
          return Object.getOwnPropertyDescriptor(source, sym).enumerable;
        })
      );
    }
    ownKeys.forEach(function(key) {
      _defineProperty(target, key, source[key]);
    });
  }
  return target;
}

function _defineProperty(obj, key, value) {
  if (key in obj) {
    Object.defineProperty(obj, key, {
      value: value,
      enumerable: true,
      configurable: true,
      writable: true
    });
  } else {
    obj[key] = value;
  }
  return obj;
}

var i = {
  test: 123,
  test1: 5234
};

var b = _objectSpread({}, i, {
  test3: 243
});

丑陋,但它会工作,并且可以自动完成。

对于这种特殊情况,您可以 polyfill Object.assign 并使用:

var b = Object.assign({}, i, { test3: 243 });

spread/rest 运算符以前不是有效语法。您需要将该语法转换为有效的语法才能使用它。