因此,如果我需要像这样更改代码:
var amazed = $(['foo', 'bar']).map(function(i, el){
return this + '!';
});
像原生一样
var amazed = (['foo', 'bar']).map(function(el, i){
return el + '!';
});
我可以做类似的事情(https://astexplorer.net/#/0rIHMowCQf)
return j(file.source)
.find(j.Identifier).filter(ident => {
if (ident.node.name == '$') console.log(ident);
return ident.node.name == '$';
}).replaceWith('').toSource();
作为第一步,这将删除 jQuery$
符号,只留下一个()
可以工作的,但感觉就像我在作弊,因为我只是给 CallExpression 一个空的标识符。我仍然需要发现如何替换参数的顺序。
js代码转换可以用于这种情况,比如将jQuery转换为Native,最终只是:
var amazed = ['foo', 'bar'].map(function(el, i){
return el + '!';
});