我有一个名称空间对象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) {
var splitNameSpace = ns.split('.');
var methodName = splitNameSpace.pop();
//console.log(splitNameSpace);
var content = [];
var obj;
for (var i=0;i<splitNameSpace.length;i++){
obj = [splitNameSpace[i]];
content = content+"["+obj+"]";
}
答案 0 :(得分:2)
你可以这样做:
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]();
您可以通过检索全局对象而不是使用window