我需要在运行时发现是否存在具有给定名称的对象,但此名称作为字符串存储在变量中。
例如,在我的Javascript中我有一个名为test的对象,然后在运行时我在一个框中写下“text”这个词,然后我把这个字符串存储在一个变量中,让它命名为输入。如何检查用输入变量中存储的字符串命名的变量是否存在?
答案 0 :(得分:6)
如果对象在全局范围内;
var exists = (typeof window["test"] !== "undefined");
答案 1 :(得分:1)
如果您在浏览器中(即非节点):
var varName = 'myVar';
if (typeof(window[varName]) == 'undefined') {
console.log("Variable " + varName + " not defined");
} else {
console.log("Variable " + varName + " defined");
}
但是,我要说我会发现非常很难证明在项目中编写此代码是正确的。您应该知道自己拥有哪些变量,除非您希望人们为您的代码或其他东西编写插件。
答案 2 :(得分:1)
if( window[input])...
所有全局变量都是window
对象的属性。 []
表示法允许您通过表达式获取它们。
答案 3 :(得分:1)
如果要查看它是否作为全局变量存在,可以在窗口对象上检查成员变量。 window是全局对象,因此它的成员是全局对象。
if (typeof window['my_objname_str'] != 'undefined')
{
// my_objname_str is defined
}
答案 4 :(得分:0)
我正在编写代码,但并不总是能够知道方法是否存在。我根据请求加载我的js文件。此外,我有方法绑定对象“通过”ajax响应,并需要知道,如果他们必须调用默认回调或进一步或不特定的方法是可用的。 所以测试如下:
function doesItExist(oName){
var e = (typeof window[oName] !== "undefined");
return e;
}
适合我。