javascript関数プログラミング---イベントのパラメータ伝達問題を解決します.


説明:関数式プログラミングの概念は、本人の理解のものであり、正規の厳密な定義ではない.
予備知識点:
参照
関数プログラミング------関数は最終的には値ですので、関数は普通の変数のように様々な演算に参加できます.これは関数プログラミングです.
Jsは関数式プログラミングをサポートします.
Jsの関数呼び出しは、2つの括弧で囲まれ、1番目は定義された関数、2番目はパラメータを表します.
例:

alert(“aaa”); 
(alert)(“aaa”)
(function(v){ return alert(v);})("aaa");
上の三つは等価です.第三の部分は、この部分---「(function(v){return alert(v)}」が新たに定義されました.
関数;この部分--「(aa)」は、新たに定義された関数にパラメータを伝達する.つまり3番目の関数定義と
呼び出しを書き込みました.
シーケンス:js----javascript===========================================================================================        jsでUIコンポーネント、すなわちdivなどのパッケージを書く際には、困難が避けられない.jsで定義されるオブジェクトの中で、DOMノードのイベントにイベント応答関数を指定する場合、このイベント応答関数のthisオブジェクトは、通常、この関数が存在するオブジェクトではなく、イベントを生成するDOMノードである.また、必要に応じて、通常は他のパラメータをイベント応答関数に伝達する必要がある.         この時の解決の道は関数式プログラミングを使うことです.以下は具体的な応用例である.=======================================================================================
例:以下の例は、ボタンを生成するButtonオブジェクトをjsによって定義する.
このボタンをクリックすると、イベントメソッドでは、イベントメソッド呼び出し時のButtonオブジェクトを取得したり、イベントを発生するオブジェクトを失わない(例では、domツリーの中のブットノード).
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<body>
 

<script language=Javascript>
function Button(value) {
  this.value = value;
  this.button = document.createElement("button");
  this.button.appendChild(document.createTextNode("test"));
   
    document.body.appendChild(this.button);
    
    // :               。
    this.falert=function(classObj,e){
       alert(classObj.value);
    }


    //  onclick                  ,     v  ,
    //   onclick    this  , Button  ;
    // onclick            onclick    this   Button  。

    this.button.onclick = (function(v) {
     return function() { 
            //  Button   falert  
           v.falert(v,this);//   this      , dom   button  
	};
  }) (this);
}
 
var bt = new Button("affffffffddda");

</script>

</body>
</html>
その中:
1 falertはクリックイベントの応答関数であり、この関数のclassObjはonclickイベント関数を呼び出した時のthisオブジェクトであり、ここではユーザが定義したButtonオブジェクトである.e onclick事件が発生した対象として、この場合は
Buttonクラスで作成されたバートンノードです.
    2これにより、関数プログラミングは、イベントソースオブジェクトを失わない前提で、様々なパラメータをうまく伝達することができる.