2

別のJSファイルから有用なもののインスタンスを作成するのに少し問題があります。インスタンスのプロパティを変更してメソッドを使用したいと思います。または、これが不可能な場合は、あなたが提案するものは何でも。これは拡張され、この構成は私を混乱させます。

(function($) {

$.extend({
    usefulThings: new function() {
        this.defaults = {
            prop_path:'/la/lala',
            //OTHER STUFF
        };
        this.construct = function(options) {
            return this.each(function() {
                var setting;
                this.settings = {};
                settings = $.extend(this.settings, $.usefulThings.defaults, options);
                $this = $(this);

                //OTHER STUFF
                $.data(this, "usefulThings",settings);
                // FIRST METHOD CALL
                //OTHER STUFF
            });
        };
        //SOME METHODS
    }
});
$.fn.extend({
    usefulThings: $.usefulThings.construct
}); 
})(jQuery);      

私は次のようなスクリプトブロックから呼び出される便利なものを見てきました:

$("#myDivName").usefulThings({
  prop_path: '/la/lala' //these seems to get overwritten in the above
});
4

1 に答える 1

0

まず、MDNによるthisキーワードの紹介をご覧ください。そして、のjQueryドキュメントで.each

次に、jqueryチェーンがどのように機能するかを確認しますか?構築方法を理解する。

new次に、この場合、キーワードの使用は絶対に不適切であることに注意してください。式は、単純なオブジェクトリテラルに置き換える必要があります。

{
    defaults: {
        prop_path:'/la/lala',
        // …
    },
    construct: function(options) {
        …
    },
    //SOME METHODS
}

さて、jQuery.extend。ドキュメントからの関連する文は

に引数が1つだけ指定されている場合$.extend()、これはtarget引数が省略されたことを意味します。この場合、jQueryオブジェクト自体がターゲットであると見なされます。これにより、jQuery名前空間に新しい関数を追加できます。これは、JQueryに新しいメソッドを追加したいプラグイン作成者にとって便利です。

そして、それは$.fn.extend(実際には)と同じで、jQueryのプロトタイプオブジェクトのショートカットであるオブジェクトを=== $.extend拡張します。jQuery.fn

于 2013-02-11T19:07:31.710 に答える