気の向くままに辿るIT/ICT/IoT
JavaScript

JavaScript / argments オブジェクト / Arguments Object

ホーム前へ次へ
ECMAScriptベースのJavaScriptとは?

JavaScript / argments オブジェクト / Arguments Object

ECMA-262 Edition 5.1 / ECMAScriptベースのJavaScript文法

ECMAScript / ECMA-262 Edition 5.1ベースのJavaScript文法

プロトタイプベースのオブジェクト指向

オブジェクト指向 / オブジェクトと種類

argments オブジェクト / Arguments Object

 // 引数を1つだけ持つ関数のはずなのに・・・

 function arg_list_samp ( obj ) 

 { 

 /* 

 突然 argments オブジェクトが現れても

 何事もなかったかのように処理される

 */ 

 var len_num = argments.length 

 var arg1 = argments [0]

 var arg2 = argments [1]

 var arg3 = argments [2]

 } 

 /* 

 その結果、本来、引数を1つしか取らない

 関数であってもこんなことができたりする

 */ 

 arg_list_samp ( "pc" , "mobile" , "paper" ) ;

 argments オブジェクトは、インスタンス生成時に本来の引数に関わらず、引数を"argments"とすると可変個の引数を取る関数・メソッドとすることができたり、任意の関数内で何の宣言もせずに argments.length プロパティや添え字 0 から始まる argments[n] を参照することが可能である特殊なオブジェクトです。

 つまり、argments オブジェクトの特徴は、インスタンス生成時は引数ともなることがあるものの、宣言も不要で唐突に関数内で参照することができる全ての関数内で利用可能なローカル変数であることです。

 よってargments オブジェクトは、Globalオブジェクトを始めとする他のオブジェクトとは異質のオブジェクトであり、Arrayオブジェクトと似た要素が0から始まる配列・リストで lengthプロパティを持つ点も似てはいますが、それ以外のArrayオブジェクトが持つメソッド含むプロパティは持たないArrayオブジェクトとも異なるオブジェクトです。

argments オブジェクトのプロパティ

 argments オブジェクトのプロパティは、下記の通りです。

Arrayオブジェクトの標準組み込みプロパティ
argments.length呼び出された際の実際の引数の数
任意の関数で宣言時に指定された引数の個数は、
func.prototype.length
argments.callee現在実行中の関数へのリファレンス(参照)
argments.caller現在実行中の関数を呼び出した関数へのリファレンス(参照)

ECMA-262 Edition 5.1 訳 / 当該仕様ページ例

ECMAScriptベースのJavaScriptリファレンス

ホーム前へ次へ