我收到以下代码:
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)
我该如何做才能在所有浏览器中正常工作?
您不能使用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)
| 归档时间: |
|
| 查看次数: |
1467 次 |
| 最近记录: |