如何在没有eval的情况下编写此JavaScript代码?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了如何在没有eval的情况下编写此JavaScript代码?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2360字,纯文字阅读大概需要4分钟。
内容图文
如何在没有eval的情况下编写此JavaScript代码?
var typeOfString = eval("typeof " + that.modules[modName].varName);
if (typeOfString !== "undefined") {
doSomething();
}
关键是我要检查的var的名称在字符串中.
也许很简单,但我不知道如何.
编辑:谢谢你到目前为止非常有趣的答案.我将遵循您的建议并将其集成到我的代码中,并进行一些测试和报告.可能需要一段时间.
Edit2:我再看一遍可能,也许更好,我向您展示了更大的图景.我非常感谢专家解释得如此美丽,最好使用更多代码:
MYNAMESPACE.Loader = ( function() {
function C() {
this.modules = {};
this.required = {};
this.waitCount = 0;
this.appendUrl = '';
this.docHead = document.getElementsByTagName('head')[0];
}
function insert() {
var that = this;
//insert all script tags to the head now!
//loop over all modules:
for (var modName in this.required) {
if(this.required.hasOwnProperty(modName)){
if (this.required[modName] === 'required') {
this.required[modName] = 'loading';
this.waitCount = this.waitCount + 1;
this.insertModule(modName);
}
}
}
//now poll until everything is loaded or
//until timout
this.intervalId = 0;
var checkFunction = function() {
if (that.waitCount === 0) {
clearInterval(that.intervalId);
that.onSuccess();
return;
}
for (var modName in that.required) {
if(that.required.hasOwnProperty(modName)){
if (that.required[modName] === 'loading') {
var typeOfString = eval("typeof " + that.modules[modName].varName);
if (typeOfString !== "undefined") {
//module is loaded!
that.required[modName] = 'ok';
that.waitCount = that.waitCount - 1;
if (that.waitCount === 0) {
clearInterval(that.intervalId);
that.onSuccess();
return;
}
}
}
}
}
};
//execute the function twice a second to check if all is loaded:
this.intervalId = setInterval(checkFunction, 500);
//further execution will be in checkFunction,
//so nothing left to do here
}
C.prototype.insert = insert;
//there are more functions here...
return C;
}());
var myLoader = new MYNAMESPACE.Loader();
//some more lines here...
myLoader.insert();
编辑3:
为了简单起见,我打算将其放在变量MYNAMESPACE.loadCheck的全局名称空间中,因此结果将是来自不同答案和注释的组合:
if (MYNAMESPACE.loadCheck.modules[modName].varName in window) {
doSomething();
}
当然,无论哪里提到“ varName”,我都必须更新Loader类.
解决方法:
在JS中,每个变量都是一个属性,如果您不知道它是谁的属性,则它是一个窗口属性,因此我想在您的情况下,这可以工作:
var typeOFString = typeof window[that.modules[modName].varName]
if (typeOFString !== "undefined") {
doSomething();
}
内容总结
以上是互联网集市为您收集整理的如何在没有eval的情况下编写此JavaScript代码?全部内容,希望文章能够帮你解决如何在没有eval的情况下编写此JavaScript代码?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。