在jQuery中扩展$ fn命名空间

时间:2012-08-06 18:16:07

标签: javascript jquery prototype

这看起来很简单,但我无法想象如何扩展$ fn命名空间。

JS:

(function ($) {
    $.fn.myorg.level1.level2.myFunction = function (usettings, params) {  
        return this.each(function () {
            //do work...etc
        });
    };
} (jQuery));

$("bla").myorg.level1.level2.myFunction(...);

如何定义命名空间链,以便我可以编写上面的函数?

我给出的示例非常简单,但是命名空间不会非常深,但我需要能够随意扩展和添加函数...等等到我的命名空间树。我不想为我添加的每个附加功能/级别重新定义树。

我没有看到任何好的例子。如果我保持在$ fn级别这很容易,但这并不能使我的代码像我需要的那样干净和可扩展。

如果我要求的是不可能的,那么正确的方法是什么?

1 个答案:

答案 0 :(得分:1)

Epascarello暗示了这一点,但我猜测之前的对象没有定义。

console.log($.fn.myorg); // undefined

$.fn.myorg.level1 = function(){}; // TypeError: Cannot set property 'level1' of undefined

但如果我们先定义事物:

$.fn.myorg = $.fn.myorg || {}; // if this object doesn't exist, create an blank object
console.log($.fn.myorg); // object

$.fn.myorg.level1 = function(){};
console.log($.fn.myorg.level1); // function