2016-12-19 7 views
1

私は正直言って、JavaScriptの理解は最善ではありません。私はDOMとそのことを操作することに慣れています。最近私はあなたに私の知識と理解を向上させるためにJavaScriptシリーズを知らない。Javascriptモジュールの場合

彼らは閉包の概念を持ち出します。私はこれに非常に精通しています。しかし私はこれまでにモジュールパターンに遭遇したことはありません。私はthis exampleを参照しています。私はすぐに自分の仕事の実例を作ってみた。これは私が思いついた例です。 は動作しません

function vehicle(){ 
    var wheels, doors; 

    function findType(wheels, doors){ 
     var numberOfWheels = wheels; 
     var numberOfDoors = doors; 
     var type; 

     switch(numberOfWheels | numberOfDoors){ 
     case 4 | 2: 
      type = "sports car"; 
     break; 
     case 4 | 4: 
      type = "sedan"; 
     break; 
     case 18 | 2: 
     case 18 | 4: 
      type = "tractor-trailer"; 
     break; 
     default: 
      type = "vehicle"; 
     } 
    } 
    return type; 
} 

var civic = vehicle(); 
console.log(civic.findType(4,4)); 

私の期待は、市民のためにコンソールが「セダン」のタイプを返すべきだということです。しかし、私は何も会わなかった。なぜ私は正確に理解できません。どんなフィードバックも非常に高く評価されます。

答えて

3

The Revealing Module Patternを使用しています。モジュール関数は、このモジュールで使用できるメソッドを公開するオブジェクトを返します。

function vehicle() { 
 
    var wheels, doors; 
 

 
    // a mdoule method 
 
    function findType(wheels, doors) { 
 
    var numberOfWheels = wheels; 
 
    var numberOfDoors = doors; 
 
    var type; 
 

 
    // the method returns the result 
 
    switch (numberOfWheels | numberOfDoors) { 
 
     case 4 | 2: 
 
     return "sports car"; 
 
     break; 
 
     case 4 | 4: 
 
     return "sedan"; 
 
     break; 
 
     case 18 | 2: 
 
     case 18 | 4: 
 
     return "tractor-trailer"; 
 
     break; 
 
     default: 
 
     return "vehicle"; 
 
    } 
 
    } 
 

 
    // the api of the module 
 
    return { 
 
    findType: findType 
 
    }; 
 
} 
 

 
var civic = vehicle(); 
 
console.log(civic.findType(4, 4));

PS

は - 様々なパターンの深さでのレビューのため Adi Osmani's Learning JavaScript Design Patternsをお読みください。

+0

この素晴らしい返信とリンクされたリソースをありがとう。私はそれがメソッドを返すオブジェクトであることを理解していませんでした。 – user1452407

+0

ようこそ:) JSを学びたい場合は、JavaScript:Good Parts、[JavaScriptAllongé、 "Six" Edition](https://leanpub.com/javascriptallongesix/read)もお勧めします。 –

関連する問題