2016-10-13 5 views
0

私はsomeFile.jsにコードのこのブリップを見た:jQueryは何らかの種類のモジュールパターンを使用できますか?

var someObject = {}; 

someObject.doWork = function(){ 
    var innerFunction = function() { 
    console.log('innerFunction has been called'); 
    } 

    innerFunction(); 
} 

$(someObject.doWork); 

このコードはデュランダルのプロジェクトに属するバンドルの一部です。これは何らかのモジュールパターンですか? jQueryは関数を呼び出すために使用されているようです。

より一般的なIIFEにこれを行う理由はありますか?

someObject.doWork = (function(){ 
    var innerFunction = function() { 
    console.log('innerFunction has been called'); 
    } 

    innerFunction(); 
})(); 

グローバル名前空間に住んでいるsomeObject実際のコードでは、明確にすること。

+0

@KevinB Ahh、['jQuery()'](http://api.jquery.com/jquery)の複数の署名です。 '$()'が最初に「Question」と表示されたときに '.ready()'のエイリアスであるとは考えていませんでした。 – guest271314

+1

ああ、私は2つの例が混ざり合っている。ええ、それは準備が整いました、私の最初の(削除された)コメントは正しかったです。 'someObject.doWork'には関数が含まれているので、' $(function(){}) 'はDOM対応のハンドラです。この関数はdom ready上で呼び出されます。 –

+0

@ P.Brian.Mackey私の応答を変更する変更が表示されない –

答えて

1

特定のパターンを使用する理由を収集できません。値がなく、元のオブジェクトは.doWork()から返されません。 $(someObject)は変数として定義されていません。質問時に少なくともjavascript

jQuery()にオブジェクトを渡す理由は、オブジェクトのjQueryメソッドを利用することです。ここで、this[0]はコールバック時の元のオブジェクトになります。例えば、

$(someObject).animate({someObject.property:someObject.property}) 

最初場合someObject.doWorkMake a rotate animation: start and end slowly, but fast in the middle

0

を見る機能です。後者の場合(IIFE)someObject.doWorkは未定義です。私は元の著者が非正統的な方法ではあるが、モジュールを作成することを意図していたと信じている。私は、より認識しやすいパターンを使用するようにコードをリファクタリングする予定です。

関連する問題