JavaScript 関数 新しいページはコチラ

提供: yonewiki
移動: 案内, 検索
(定義とオブジェクト化の同時指示)
(定義と呼び出しの同時指示)
218行: 218行:
  
 
== 定義と呼び出しの同時指示 ==
 
== 定義と呼び出しの同時指示 ==
:前述のサンプルでは、関数の定義部分と、実際に関数のオブジェクトをnewキーワードを使って、左辺値のオブジェクト名に生成する処理がわかれていましたが、以下のように記述することで、定義と生成をひとまとめにできます。
+
:関数の定義部分と、関数の呼び出し処理がわかれていましたが、以下のように記述することで、定義をして、呼び出し用のオブジェクト作成をひとまとめにできます。
*var objName1 = function(){ … };
+
*var objName1 = function funcName(){ … };
:のように記述することで同時生成できます。これは何がメリットなのでしょうか?それは関数に名前を付けない無名関数のオブジェクト化をするという点にあります。無名関数ということは、関数をどこに定義しても、例えばグローバルの空間、つまりはどこからでも関数名が参照できそうな場所で定義したとしても、関数名がないので、不用意に呼び出されることはなく一度きりの関数として利用できることです。分けて書いた場合と使い方はほぼ変わらないので、サンプルは必要ないかもしれませんが、念のため、サンプルを記載しておきます。
+
*var objName1 = function (){ … };
 +
:のように記述することで定義とオブジェクトを同時生成できます。これは何がメリットなのでしょうか?それは関数に名前を付けない無名関数のオブジェクト化をすることができるという点にあります。2個目の例のようにfunctionに続く、funcNameという関数名を省略することができます。無名関数ということは、関数をどこに定義しても、例えばグローバルの空間、つまりはどこからでも関数名が参照できそうな場所で定義したとしても、関数名がないので、不用意に呼び出されることはなく一度きりの関数として利用できることです。サンプルではfuncNameを与えるパターンの例を記述します。この場合は無名関数ではないので、同時に生成しただけであって、特に分けて書いた場合との違いはありません。もちろん分けて書いた場合と使い方はほぼ変わらないので、サンプルは必要ないかもしれませんが、念のため、サンプルを記載しておきます。
  
 
サンプル
 
サンプル
 
<syntaxhighlight lang="javascript" line start="1">
 
<syntaxhighlight lang="javascript" line start="1">
 +
<HTML>
 +
<HEAD>
 +
<TITLE>JavaScript 定義とオブジェクト化の同時指示</TITLE>
 +
</HEAD>
 +
<BODY>
 +
JavaScript 定義とオブジェクト化の同時指示<br />
 +
<SCRIPT Language="JavaScript">
 +
<!--
 +
objName = function funcName(a, b){
 +
    document.write("■objValue関数オブジェクトが呼び出されました。<br />");
 +
    funcName.nValue1 = a;
 +
    funcName.nValue2 = b;
 +
    funcName.nSeki = funcName.nValue1 * funcName.nValue2;
 +
};
  
 +
objName(10,20);
 +
 +
with(document){
 +
    write("■メインプログラム<br />");
 +
    write("objName.nValue1 = " + objName.nValue1 + "<br />");
 +
    write("objName.nValue2 = " + objName.nValue2 + "<br />");
 +
    write("積の結果 : " + objName.nSeki + "<br />");
 +
}
 +
 +
-->
 +
</SCRIPT>
 +
</BODY>
 +
</HTML>
 
</syntaxhighlight>
 
</syntaxhighlight>
 
[[Media:JavaScript Function parallel.html|実行結果サンプル]]
 
[[Media:JavaScript Function parallel.html|実行結果サンプル]]
 +
 
== 定義とオブジェクト化の同時指示 ==
 
== 定義とオブジェクト化の同時指示 ==
 
:前述のサンプルでは、関数の定義部分と、実際に関数のオブジェクトをnewキーワードを使って、左辺値のオブジェクト名に生成する処理がわかれていましたが、以下のように記述することで、定義と生成をひとまとめにできます。
 
:前述のサンプルでは、関数の定義部分と、実際に関数のオブジェクトをnewキーワードを使って、左辺値のオブジェクト名に生成する処理がわかれていましたが、以下のように記述することで、定義と生成をひとまとめにできます。

2016年2月22日 (月) 00:00時点における版



個人用ツール
名前空間

変種
操作
案内
ツールボックス