5

newのように演算子がオプションになるように、jQuery はその Deferred オブジェクトをどのように実装しvar x = $.Deferred();ますか?

4

1 に答える 1

6

これがそれを達成するためのパターンです...

$.Deferred = function() {
    if ( ! (this instanceof $.Deferred)) {
        return new $.Deferred;
    }
}

thisコンストラクターで新しいオブジェクトに設定されているため、機能します。instanceofLHS オペランドのプロトタイプ チェーンに RHS オペランドがあるかどうかがわかります。この条件が真でない場合、関数はオブジェクトのインスタンス化されたバージョンを返します。

于 2012-08-13T08:01:58.387 に答える