第二个参数作为javascript中的函数或对象并追加到空对象

时间:2011-08-09 01:24:00

标签: javascript jquery arguments

我为命名空间创建了一个函数,但是如何扩展其功能

代码:

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”,{});

感谢您提供任何帮助或建议。

1 个答案:

答案 0 :(得分:1)

example

特殊操作符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/