问题描述
我正在尝试使用 Babel 类型创建一个 AST,并用下面的函数体替换这棵树。具体来说,我想删除 var G = 2
,创建一个由 while 循环和 if 语句组成的 AST,然后用这个新的 AST 替换 for 循环。我能够使用 t.ifStatement 创建一个 if 语句节点,但似乎无法获得这个 if 语句节点的路径,我打算使用 path.insertAfter 函数添加其他语句。
我是 Babel JS 的新手,所以如果有更好的方法将原始代码转换为目标,请随时给我建议。
原始代码
q8tt[48318] = (function() {
var G = 2;
for (; G !== 9; ) {
switch (G) {
case 1:
return globalThis;
break;
case 5:
var q;
try {
var N = 2;
for (; N !== 6; ) {
switch (N) {
case 9:
delete q['tEKup'];
var W = Object['prototype'];
delete W['bECIA'];
N = 6;
break;
case 3:
throw "";
N = 9;
break;
case 2:
Object['defineProperty'](Object['prototype'],'bECIA',{
'get': function() {
var s = 2;
for (; s !== 1; ) {
switch (s) {
case 2:
return this;
break;
}
}
},'configurable': true
});
q = bECIA;
N = 5;
break;
case 5:
q['tEKup'] = q;
N = 4;
break;
case 4:
N = typeof tEKup === 'undefined' ? 3 : 9;
break;
}
}
} catch (r) {
q = window;
}
return q;
break;
case 2:
G = typeof globalThis === 'object' ? 1 : 5;
break;
}
}
}
)();
目标
q8tt[48318] = (function() {
if (typeof globalThis === 'object') {
return globalThis;
} else {
var q;
Object['defineProperty'](Object['prototype'],{
'get': function() {
return this;
},'configurable': true
});
q = bECIA;
q['tEKup'] = q;
if (typeof tEKup === 'undefined') {
q = window;
} else {
delete q['tEKup'];
var W = Object['prototype'];
delete W['bECIA'];
}
return q;
}
})
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)