gpt4 book ai didi

javascript - 设置 eval 的范围

转载 作者:太空宇宙 更新时间:2023-11-04 03:15:28 25 4
gpt4 key购买 nike

有没有办法设置 eval 的全局?我想设置 eval 的全局,这样我就不必在所有内容前面加上 obj 前缀。

如果我执行以下操作,则会收到错误

ReferenceError: MyClass is not defined

let obj = {
MyClass: class MyClass {
static CallMe() {}
}
}

eval(`
'use strict';
global = obj;
result = MyClass.CallMe();
`)

但是,如果我这样做:

result = obj.MyClass.CallMe();

它可以工作,但我想这样做,这样我就不必在调用前加上 obj.有什么原因可以做到这一点吗?

最佳答案

我无法想象为什么你需要在这里使用eval,但如果你这样做,你可以在评估代码中使用with (obj):

eval(`
'use strict';
with (obj) {
result = MyClass.CallMe();
}
`);

我仍然觉得你不应该在这里使用 eval(它有什么用?),因为如果你不小心,很容易意外地暴露自己的注入(inject)漏洞。你在这里使用 eval 做什么?也许我们可以指出更好的方法。

关于javascript - 设置 eval 的范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57083649/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com