JavaScriptの関数とメソッドより
関数もオブジェクトである
function文での関数定義
function myFunc(arg)
{
alert(arg);
}
myFunc("hoge"); // hoge と表示される。
Functionコンストラクタでの関数定義
var myFunc = new Function("arg", "alert(arg);");
myFunc("hoge"); // hoge と表示される。
関数の代入
function funcA()
{
alert("関数A");
}
var funcB = funcA; // 関数の代入
funcB(); // 関数A と表示される。
メソッドもプロパティである
メソッドの定義
function func()
{
alert("関数です。");
}
var obj = new Object();
obj.method = func; // 関数の代入
obj.method();
無名関数の定義
無名関数の定義
var obj = new Object();
obj.method = function(arg)
{
alert(arg);
}
obj.method("テスト"); // テスト と表示される
関数を引数に取る関数
// 配列の全要素に指定した関数を実行する
function eachArray(arr, func) {
for (var i=0; i<;arr.length; i++) {
func(arr[i]);
}
}
var array = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
eachArray(array, alert);
引数の秘密
function myFunc(arg1, arg2) {
alert(arg1 + ":" + arg2);
}
myFunc("arg1", "arg2"); // 通常の呼び出し
myFunc(); // 引数の数が足りない
myFunc("arg1", "arg2", "arg3"); // 引数の数が多い
argumentsオブジェクト
function myFunc(arg1, arg2) {
// arguments[0] は第一引数を指すので true
alert(arg1 == arguments[0]);
// シグネチャに無い 第四引数にアクセスする事ができる
alert(arguments[3]);
}
// 二回目のアラートは arg4 と表示される。
myFunc("arg1", "arg2", "arg3", "arg4");
まとめ
- 関数はオブジェクトである。
- メソッドというのは、関数オブジェクトの参照を保持している、ただのプロパティである。
- 無名関数という関数の定義方法がある。
- 関数を引数に渡すことができる。
- argumentsオブジェクトという引数を表すオブジェクトが存在する。