window[“object.something”] 不适用于对象 JavaScript
window["object.something"] not working for objects javascript
嗨,我只是想不通这个。
我需要使用该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);
相关文章:
- html5 drawImage适用于firefox,而不是chrome
- Jquery Ajax POST不工作.适用于GET
- 如何调试遗留的javascript代码(适用于IE,但在Google Chrome中不正常)
- .load()适用于window,而不是ID
- 使用Jquery更改css样式适用于id's、 不在课堂上
- 提交按钮不会;不适用于Chrome或Firefox,但适用于Internet Explorer
- 为什么 javascript 中的“btoa”编码适用于 20 位字符串而不是 20 位整数
- Javascript String to Date适用于Chrome,而不是FF或Safari
- Onchange,向上,向下箭头键适用于FF和Chrome,但在IE中不起作用
- .load() 适用于 IE 和 dreamweaver 预览版,但不能使用 opera 和 chrome
- 找不到适用于 Highcharts 的 JSON 数组语法
- 为什么在jQuery中使用focusout适用于Firefox,而使用addEventListener则不适用;t
- jQuery选择菜单验证器适用于FF和Chrome,但不适用IE
- 单选按钮'onclick'适用于Chrome和Firefox,但不适用IE
- JQuery ScrollTop适用于chrome,但不适用firefox
- window.opener.location.href适用于IE,但不适用Chrome或Safari
- Frame Busting buster不完全适用于IE
- Jquery touch punch适用于Chrome和Firefox,但不适用IE
- 背景更改仅适用于chrome+$.预加载不适用;不起作用
- JavaScript window.location.replace适用于Firefox,但不适用IE或Chrome