2016-11-17 26 views
0

無名関数への輸出を渡すの効果があるもの:私はこれを見た私は<a href="https://github.com/possan/node-etherdream/blob/master/etherdream.js" rel="nofollow noreferrer">node-etherdream</a>ライブラリ用とメインモジュールのコードを見ていた

(省略):

(function(ns) { 
    /// a bunch of code 

})(exports); 

私が持っていますexportsがこのような匿名関数に渡されることはありませんでした。また、このコードのどこにでもmodule.exportsが見つかりませんでした。しかし、このファイルは他のモジュールと同様にreuireとなっています。

誰かが私にこのexportsの使用について説明することはできますか?

答えて

1

エクスポートは、変数を設定できる特別なオブジェクトです。 この例では、関数が実行されるときに、このオブジェクトのエクスポートが渡されます。

あなたには、いくつかの変数をエクスポートしたい場合は、NSようなこのケースで変数(輸出)でそれを設定することができます。

(function(ns) { 
/// a bunch of code 
    ns.func1 = function(){} 

    ns.func2 = function(){} 

    ns.age = 20 
})(exports); 

あなたが他のファイルからファイルを必要とするときは、この変数へのアクセスを取得する関数func1そのような、fun​​c2の年齢:

var o = require('file.js') 
o.func1(); 
o.func2(); 
o.age // => 20 
0

あなたは以下のImmediately Invoked Function Expression (IIFE)を見ることができますが、関数のに引数として渡されexportsiffyを発音します)下の引数。

(function(ns) { 
    /// a bunch of code 

})(exports); 

コードEtherDreamオブジェクトが必要なすべてのメソッドを使用して作成し、最終的にnsexportsとして渡さなっていると、以下の行がexports.EtherDream = EtherDream;

(function(ns) { 
    /// a bunch of code 


    ns.EtherDream = EtherDream; 

})(exports); 
と同等です ns引数にバインドなっている内側にあなたが見えます

IIFEの動作とその引数がまだ分かっていない場合は、下記のサンプルiifeを実行できます。

(function(ns) { 
 
     console.log(ns); 
 
     
 
})(10); // argument passed as 10 to ns 
 

 

 
// This is same as below global scope method 
 

 
function another(ns) { 
 
    console.log(ns); 
 
} 
 

 
another(10);

関連する問題

 関連する問題