Не уверен, что это то, что вы имеете в виду.Принимая во внимание ваши изменения, реакцию Кевина и то, что вы предлагаете в своих комментариях, вы могли бы иметь в виду следующее:
var MY = {};
MY.namespace = function(ns_string, fnBody){
var parts = ns_string.split('.'),
parent =MY,i,
last = parts.slice(parts.length-1);
console.log(parent);
if(parts[0]==="MY"){
parts = parts.slice(1);
}
if (parts.length !== 1) {
parts = parts.slice(0, parts.length-1);
}
for(i=0; i< parts.length ;i++){
if (typeof parent[parts[i]] ==="undefined"){
parent[parts[i]] ={};
}
parent = parent[parts[i]];
}
parent[last] = fnBody;
return parent;
};
Это будет работать как
> MY.namespace('ns1.ns2.myFn', function(console.log('this is myFn')));
> MY.ns1.ns2.myFn();
this is myFn