gpt4 book ai didi

javascript - 窗口 ["object.something"] 不适用于对象 javascript

转载 作者:行者123 更新时间:2023-12-03 06:32:31 26 4
gpt4 key购买 nike

嗨,我就是不明白这个问题。

我需要使用 window["evaluate string into js object"] 因为我正在将 Web 应用程序转换为 ChromeOS Chrome 应用程序,并且它们不允许您使用 eval() 制定内容安全策略。

我的问题是对于基本变量来说它没问题,例如:

var a = "foo";

var b = window["a"];

这会将“foo”放入 b 中,没有问题。但是一旦我有了一个对象(全局或本地),它就不起作用,所以如果“a”是一个对象,代码会像这样:

a.test = "foo";

var b = window["a.test"];

那是行不通的。

这有什么原因吗?一般来说,我似乎找不到太多有关 window[] 的信息,因此想知道是否有任何见解或至少可以为我指明正确的方向。

谢谢

最佳答案

window[] 不适用于命名空间函数,因此如果您尝试评估 window['a.test'] 它将失败。正确的替代方法是使用 window['a']['test']。如果您不确定要使用的命名空间对象的数量,您可以创建一个简单的函数,将字符串从 . 中分离出来,并为每个部分创建一个窗口对象。示例:

var str = 'namespace.service.function';
var parts = str.split(".");
for (var i = 0, len = parts.length, obj = window; i < len; ++i) {
obj = obj[parts[i]];
}
console.log(obj);

关于javascript - 窗口 ["object.something"] 不适用于对象 javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38385918/

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