我为命名空间创建了一个函数,但是如何扩展其功能
代码:
MY.property = function (str, obj, prevent) {
var ns = obj || MY,
k = str.split(".");
while (k.length > 1) {
if (!prevent && typeof ns[k[0]] === "undefined") {
ns[k[0]] = {};
}
if (ns[k[0]]) {
ns = ns[k.shift()];
} else {
return;
}
}
return [ns, [k[0]]];
};
MY.namespace = function (str) {
var ns = this.property(str),
k = str.split(".");
if (k[0] === "MY") {
k.shift();
}
if (ns && ns[0][ns[1]]) {
return;
} else {
ns[0][ns[1]] = {};
}
return true;
};
这仅适用于MY.namespace(“test”),var My.test = function(){};但我怎么能像这个MY.namespace(“test”,function(){})一样扩展它;和MY.namespace(“test”,{});
感谢您提供任何帮助或建议。
答案 0 :(得分:1)
特殊操作符typeof应该足以实现此目的:
My.namespace = function (str, obj) {
if (obj) {
this[str] = obj;
}
....
My.namespace('test', function () {console.log('here');});
My.test()
编辑:更新的示例:http://jsfiddle.net/qk6Kj/1/