window[“object.something”] 不适用于对象 JavaScript

window["object.something"] not working for objects javascript

本文关键字:不适用 适用于 对象 JavaScript object something window      更新时间:2023-09-26

嗨,我只是想不通这个。

我需要使用该window["evaluate string into js object"],因为我正在将网络应用程序转换为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);