Jquery 从字符串创建名称空间对象以调用函数?
我有一个名称空间对象Jquery 从字符串创建名称空间对象以调用函数?,jquery,javascript,Jquery,Javascript,我有一个名称空间对象form.iso.methodName作为字符串,我想调用该方法。我无法像[form][iso][methodName]那样创建命名空间对象 split : function(ns) { // ns namespace is object var splitNameSpace = ns.split('.'); var methodName = splitNameSpace.pop(); //console.log(splitNameSpace);
form.iso.methodName
作为字符串,我想调用该方法。我无法像[form][iso][methodName]那样创建命名空间对象
split : function(ns) { // ns namespace is object
var splitNameSpace = ns.split('.');
var methodName = splitNameSpace.pop();
//console.log(splitNameSpace);
var content = [];
for (var i=0;i<splitNameSpace.length;i++){
content = [splitNameSpace[i]];
console.log(content);
}
split:function(ns){//ns名称空间是对象
var splitNameSpace=ns.split('.');
var methodName=splitNameSpace.pop();
//log(splitNameSpace);
var内容=[];
对于(var i=0;i您可以这样做:
function namespace(ns){
var d, o;
n = ns.split('.');
o = window[n[0]] = window[n[0]] || {};
var l = n.length;
for(var i=1; i<l; i++){
o = o[n[i]] = o[n[i]] || {};
}
return o;
}
var param = 'foo.bar.blah.methodName',
method = param.split('.').pop(),
ns = param.split('.').slice(0,-1).join('.'),
obj = namespace(ns);
obj[method]();
函数名称空间(ns){
变量d,o;
n=ns.分裂('.');
o=窗口[n[0]]=窗口[n[0]]| |{};
var l=n.长度;
对于(var i=1;i您能试着更好地解释一下您想要做什么吗?@AndrewMcGivery我正在函数split参数中传递一个名称空间字符串,我希望该函数拆分并构建名称空间对象[form][iso[methodName]所以我可以调用不同名称空间对象中的函数..我希望我解释过。我英语不好所以,如果我想理解的话,你想调用form.iso.methodName(),给定字符串“form.iso.methodName”?@AndrewMcGivery是的,但是form.iso是名称空间对象你不能调用eval(ns+“()”)?我无法获取它,我正在尝试为方法名称拆分后弹出最后一个ns,其余的作为命名空间对象,但我不明白您在做什么?您可以调用命名空间来检索方法的命名空间:var param='foo.bar.blah.methodName';method=ns.split('.').pop();ns=param.split('.).slice(0,-1).join('.);obj=namespace(ns);obj[method]();
我发现解决方案有点不整洁,但有效split:function(ns){var splitNameSpace=ns.split('.');var methodName=splitNameSpace.pop();//console.log(splitNameSpace);var content=[];var obj;for(var i=0;iOW-正是我所需要的,而且它可以工作!一条注释:在函数名称空间中没有使用变量d。
function namespace(ns){
var d, o;
n = ns.split('.');
o = window[n[0]] = window[n[0]] || {};
var l = n.length;
for(var i=1; i<l; i++){
o = o[n[i]] = o[n[i]] || {};
}
return o;
}
var param = 'foo.bar.blah.methodName',
method = param.split('.').pop(),
ns = param.split('.').slice(0,-1).join('.'),
obj = namespace(ns);
obj[method]();