Babel JS 从父节点获取子节点的路径

问题描述

我正在尝试使用 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 (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...