传播运营商替代方案

时间:2016-05-23 21:13:59

标签: javascript

我收到了以下代码:

function sortByProp(...props) {
  const callback = props.pop();
  return function(a, b) {
    const v1 = retrieve(props, a);
    const v2 = retrieve(props, b);
    return callback(v1, v2);
  } 
}

它适用于大多数浏览器,但不适用于Opera。我收到以下错误:

function sortByProp(...props) {
                    ^^^
SyntaxError: Unexpected token ...

我访问了https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Operators/Spread_operator以查看是否有替代品可以查看是否有针对此的polyfill,但我找不到。

我用这两个来调用这个函数:

.sort(sortByProp('key', 'k', a))
          .sort(sortByProp('key', 'n', b));

我怎样才能使它在所有浏览器中都有效?

1 个答案:

答案 0 :(得分:4)

您无法填充语法。它只是不起作用。语法检查在聚合填充的任何逻辑发生之前发生。您可以使用Babel等编译器将ES2015代码转换为ES5。或者您可以重写您的函数以使用arguments

function sortByProp() {
  var props = [].slice.call(arguments);
  const callback = props.pop();
  return function(a, b) {
    const v1 = retrieve(props, a);
    const v2 = retrieve(props, b);
    return callback(v1, v2);
  } 
}