扩展运算符替代

use*_*127 1 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);
  } 
}
Run Code Online (Sandbox Code Playgroud)

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

function sortByProp(...props) {
                    ^^^
SyntaxError: Unexpected token ...
Run Code Online (Sandbox Code Playgroud)

我访问了https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Operators/Spread_operator,以查看是否有替代方法可以查看是否有这种方法,但是我找不到。

我使用以下两个调用此函数:

.sort(sortByProp('key', 'k', a))
          .sort(sortByProp('key', 'n', b));
Run Code Online (Sandbox Code Playgroud)

我该如何做才能在所有浏览器中正常工作?

Mik*_*uck 5

您不能使用polyfill语法。就是行不通。语法检查发生在来自polyfill的任何逻辑发生之前。您可以使用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);
  } 
}
Run Code Online (Sandbox Code Playgroud)