使用字符串变量访问JavaScript模块方法
我用JavaScript创建了一个模块使用字符串变量访问JavaScript模块方法,javascript,jquery,Javascript,Jquery,我用JavaScript创建了一个模块 var test = function () { var validate = function () { alert("fg"); }; return { validate: validate }; }(); 现在,我可以使用字符串访问上述模块吗?例如: $(function () { var s = "test"; s.validate(); // error
var test = function () {
var validate = function () {
alert("fg");
};
return {
validate: validate
};
}();
现在,我可以使用字符串访问上述模块吗?例如:
$(function () {
var s = "test";
s.validate(); // error
});
嗯,我试过了,但到目前为止运气不好,因为“s”是字符串。是否有任何方法将此字符串转换为上述模块对象并访问
validate
方法 您可以使用eval()
旁注:
仔细使用eval()
。从:
eval()是一个危险的函数,它以调用方的权限执行传递给它的代码。如果使用可能受恶意方影响的字符串运行eval(),则最终可能会在具有网页/扩展名权限的用户计算机上运行恶意代码
您可以使用
eval()
旁注:
仔细使用eval()
。从:
eval()是一个危险的函数,它以调用方的权限执行传递给它的代码。如果使用可能受恶意方影响的字符串运行eval(),则最终可能会在具有网页/扩展名权限的用户计算机上运行恶意代码
s是一个字符串,因此如果要在s上调用validate,则必须扩展字符串原型
String.prototype.validate = function () {
return alert("fg")
};
或
但是如果您想创建一个名为“Test”的对象
s是一个字符串,因此如果要在s上调用validate,则必须扩展字符串原型
String.prototype.validate = function () {
return alert("fg")
};
或
但是如果您想创建一个名为“Test”的对象
另一种方法是将函数声明为全局函数
window.test=函数(){
var validate=函数(){
警报(“fg”);
};
返回{
验证:验证
};
}();
$(函数(){
var s=“测试”;
窗口[s]。验证();
});代码>
另一种方法是将函数声明为全局函数
window.test=函数(){
var validate=函数(){
警报(“fg”);
};
返回{
验证:验证
};
}();
$(函数(){
var s=“测试”;
窗口[s]。验证();
});代码>
我想你误读了这个问题。请注意字符串的值与模块的名称是如何相同的。我认为您误读了这个问题。请注意字符串的值与模块的名称是如何相同的。如果将test
函数声明为全局函数,则可以。它是一个全局函数还是名称空间?你能解释一下这样做的目的吗?我不太清楚您在这里想做什么。如果您将test
函数声明为全局函数,您可以这样做。它是一个全局函数还是名称空间?你能解释一下这样做的目的吗?我不太清楚你想在这里做什么。我认为有必要补充一点,你应该不惜一切代价避免eval
。这是缓慢而危险的,通常表明代码中的设计很差。OP应该重新考虑程序设计,而不是合并eval
。我认为有必要补充一点,您应该不惜一切代价避免eval
。这是缓慢而危险的,通常表明代码中的设计很差。OP应该重新考虑程序设计,而不是合并eval
。
var test = function () {
var validate = function () {
alert("fg");
};
return {
validate: validate
};
}();
$(function () {
var s = test(); // Here
s.validate();
});