3

私が最初に独自のコードを書き始めたとき、jQuery の「強化された」init コンストラクターを後で理解するまで理解できなかったので、オブジェクトを構築する別の方法に固執しました。古いやり方を維持するべきか、それとも独自の「強化された」初期化コンストラクターを使い始めるべきか疑問に思っていました。


私のコンストラクタ:

var $ = function(selector,context,createObj) {
        if(createObj) {
           // actually initiating object
        } else {
           return new $(selector,context,true);
        }
};

jQuery:

jQuery = function( selector, context ) {
    // The jQuery object is actually just the init constructor 'enhanced'
    return new jQuery.fn.init( selector, context, rootjQuery );
};

実際の初期:

init: function( selector, context, rootjQuery ) {
    // some code
}

プロトタイプの変更 (jQuery.prototype.init.prototype=jQuery.prototype):

jQuery.fn.init.prototype = jQuery.fn;
4

1 に答える 1

2

jQueryのコンストラクターパターンは歴史的に成長しており、悪い習慣です-または少なくとも不必要に複雑です。new(間違って適用された場合)なしでうまく機能するコンストラクターが必要な場合は、

function $(selector, context) {
    if (this instanceof $) {
        // actually initiating object
    } else {
        return new $(selector, context);
    }
}
于 2013-03-23T20:19:46.950 に答える