4

これは簡単に思えますが、$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 レベルにとどまっていれば簡単ですが、それではコードが必要なほどクリーンで拡張可能になりません。

私が求めていることが不可能な場合、正しいアプローチは何ですか?

4

1 に答える 1

1

エパスカレロはこれをほのめかしましたが、以前のオブジェクトは定義されていないと推測しています。

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
于 2012-08-06T18:26:15.743 に答える