譛ャ鬆√�逶ョ谺。 逶ョ谺。

15.3 Function 繧ェ繝悶ず繧ァ繧ッ繝�

15.3.1 髢「謨ー縺ィ縺励※蜻シ蜃コ縺輔l繧� Function 繧ウ繝ウ繧ケ繝医Λ繧ッ繧ソ

Function 縺後さ繝ウ繧ケ繝医Λ繧ッ繧ソ縺ィ縺励※縺ァ縺ッ縺ェ縺城未謨ー縺ィ縺励※蜻シ蜃コ縺輔l繧句�エ蜷医€√◎繧後�譁ー縺励> Function 繧ェ繝悶ず繧ァ繧ッ繝医r菴懈�縺怜�譛溷喧縺吶k縲ゅ@縺溘′縺」縺ヲ縲�未謨ー蜻シ縺ウ蜃コ縺� Function(窶ヲ) 縺ッ縲∝酔縺伜シ墓焚繧偵→繧九が繝悶ず繧ァ繧ッ繝育函謌仙シ� new Function(窶ヲ) 縺ィ遲我セ。縺ァ縺ゅk縲�

15.3.1.1 Function (p1, p2, 窶ヲ , pn, body)

Function 髢「謨ー縺後≠繧句シ墓焚 p1, p2, 窶ヲ, pn, body (n 縺� 0縲√▽縺セ繧翫€�"p" 蠑墓焚縺後↑縺�°繧ゅ@繧後★縲� body 繧よ署萓帙&繧後↑縺�°繧ゅ@繧後↑縺�) 縺ァ蜻シ蜃コ縺輔l繧句�エ蜷医€∵ャ。縺ョ繧ケ繝�ャ繝励′蜿悶i繧後k:

  1. Function 繧ウ繝ウ繧ケ繝医Λ繧ッ繧ソ縺悟酔縺伜シ墓焚縺ァ蜻シ蜃コ縺輔l縺溘°縺ョ繧医≧縺ォ(15.3.2.1)縲∵眠縺励> Function 繧ェ繝悶ず繧ァ繧ッ繝医r菴懈�縺励※霑斐☆縲�

15.3.2 Function 繧ウ繝ウ繧ケ繝医Λ繧ッ繧ソ

Function 縺� new 蠑上�荳€驛ィ縺ァ蜻シ蜃コ縺輔l繧九→縺阪€√◎繧後�繧ウ繝ウ繧ケ繝医Λ繧ッ繧ソ縺ァ縺ゅk: 縺昴l縺ッ譁ー縺溘↓逕滓�縺輔l縺溘が繝悶ず繧ァ繧ッ繝医r蛻晄悄蛹悶☆繧九€�

15.3.2.1 new Function (p1, p2, 窶ヲ , pn, body)

譛€蠕後�蠑墓焚縺ッ縲�未謨ー縺ョ譛ャ譁�(螳溯。悟庄閭ス縺ェ繧ウ繝シ繝�)繧呈欠螳壹☆繧�; 蜈郁。後☆繧句シ墓焚縺ッ莉ョ蠑墓焚繧呈欠螳壹☆繧九€�Function 繧ウ繝ウ繧ケ繝医Λ繧ッ繧ソ縺後′縺ゅk蠑墓焚 p1, p2, 窶ヲ, pn, body (n 縺� 0縲√▽縺セ繧翫€�"p" 蠑墓焚縺後↑縺�°繧ゅ@繧後★縲� body 繧よ署萓帙&繧後↑縺�°繧ゅ@繧後↑縺�) 縺ァ蜻シ蜃コ縺輔l繧句�エ蜷医€∵ャ。縺ョ繧ケ繝�ャ繝励′蜿悶i繧後k:

  1. P 繧堤ゥコ譁�ュ怜�縺ィ縺吶k縲�
  2. 蠑墓焚縺御ク弱∴繧峨l縺ェ縺代l縺ー縲� body 繧堤ゥコ譁�ュ怜�縺ィ縺励※縲√せ繝�ャ繝� 13 縺ク縲�
  3. 蠑墓焚縺� 1 縺、荳弱∴繧峨l縺溘↑繧峨�縲�body 繧偵◎縺ョ蠑墓焚縺ィ縺励※縲√せ繝�ャ繝� 13 縺ク縲�
  4. Result(4) 繧呈怙蛻昴�蠑墓焚縺ィ縺吶k縲�
  5. P 繧� ToString(Result(4)) 縺ィ縺吶k縲�
  6. k 繧� 2 縺ィ縺吶k縲�
  7. k 縺悟シ墓焚縺ョ謨ー縺ィ遲峨@縺代l縺ー縲� body 繧� k 逡ェ逶ョ縺ョ蠑墓焚縺ィ縺励※縲√せ繝�ャ繝� 13 縺ク縲�
  8. Result(8) 繧� k 逡ェ逶ョ縺ョ蠑墓焚縺ィ縺吶k縲�
  9. ToString(Result(8)) 繧貞他蜃コ縺吶€�
  10. P 繧� 蜑阪� P 縺ョ蛟、, 譁�ュ怜� "," (繧ォ繝ウ繝�), Result(9) 繧帝€」邨舌@縺溽オ先棡縺ィ縺吶k縲�
  11. k 繧� 1 蠅怜刈縺輔○繧九€�
  12. 繧ケ繝�ャ繝� 7 縺ク縲�
  13. ToString(body) 繧貞他蜃コ縺吶€�
  14. P 縺� FormalParameterListopt 縺ィ縺励※隗」譫蝉ク崎�縺ェ繧峨�縲∽セ句、� SyntaxError 繧呈兜縺偵k縲�
  15. body 縺� FunctionBody 縺ィ縺励※隗」譫蝉ク崎�縺ァ縺ゅl縺ー縲∽セ句、� SyntaxError 繧呈兜縺偵k縲�
  16. FormalParameterListopt 縺ィ縺励※ P 繧定ァ」譫舌@縺溘b縺ョ縲� FunctionBody 縺ィ縺励※ body 繧定ァ」譫舌@縺溘b縺ョ繧偵ヱ繝ゥ繝。繝シ繧ソ縺ォ貂。縺励€�13.2 縺ォ隕丞ョ壹&繧後k繧医≧縺ォ縲∵眠隕� Function 繧ェ繝悶ず繧ァ繧ッ繝医r逕滓�縺吶k縲4cope 繝代Λ繝。繝シ繧ソ縺ィ縺励※繧ー繝ュ繝シ繝舌Ν繧ェ繝悶ず繧ァ繧ッ繝医°繧画ァ区�縺輔l繧九せ繧ウ繝シ繝励メ繧ァ繝シ繝ウ蜀�r貂。縺吶€�
  17. Result(16) 繧定ソ斐☆縲�

prototype 繝励Ο繝代ユ繧」縺ッ縲�未謨ー縺後さ繝ウ繧ケ繝医Λ繧ッ繧ソ縺ィ縺励※菴ソ逕ィ縺輔l繧句庄閭ス諤ァ縺ォ蛯吶∴縲√☆縺ケ縺ヲ縺ョ髢「謨ー縺ォ閾ェ蜍慕噪縺ォ菴懈�縺輔l繧九€�

NOTE 謖�ョ壹&繧後k蜷�サョ蠑墓焚縺ョ縺溘a縺ォ 1 蠑墓焚繧呈戟縺、縺ョ縺ッ險ア螳ケ縺輔l繧九′縲∝ソ��医〒縺ッ縺ェ縺�€�

萓九∴縺ー縲∵ャ。縺ョ 3 縺、縺ョ陦ィ迴セ縺ッ縺吶∋縺ヲ蜷後§邨先棡繧堤函繧€:

new Function("a", "b", "c", "return a+b+c")
new Function("a, b, c", "return a+b+c")
new Function("a,b", "c", "return a+b+c")

15.3.3 Function 繧ウ繝ウ繧ケ繝医Λ繧ッ繧ソ縺ョ繝励Ο繝代ユ繧」

Function 繧ウ繝ウ繧ケ繝医Λ繧ッ繧ソ縺ョ蜀�Κ [[Prototype]] 繝励Ο繝代ユ繧」縺ッ Function 繝励Ο繝医ち繧、繝励が繝悶ず繧ァ繧ッ繝� (15.3.4) 縺ァ縺ゅk縲� 蜀�Κ繝励Ο繝代ユ繧」縺ィ length 繝励Ο繝代ユ繧」 (蛟、縺ッ1) 縺ョ莉悶↓縲� Function 繧ウ繝ウ繧ケ繝医Λ繧ッ繧ソ縺ッ谺。縺ョ繝励Ο繝代ユ繧」繧呈戟縺、:

15.3.3.1 Function.prototype

Function.prototype 縺ョ蛻晄悄蛟、縺ッ Function 繝励Ο繝医ち繧、繝励が繝悶ず繧ァ繧ッ繝� (15.3.4) 縺ァ縺ゅk縲�

縺薙�繝励Ο繝代ユ繧」縺ッ螻樊€ァ { DontEnum, DontDelete, ReadOnly } 縺ァ縺ゅk縲�

15.3.4 Function 繝励Ο繝医ち繧、繝励が繝悶ず繧ァ繧ッ繝医�繝励Ο繝代ユ繧」

Function 繝励Ο繝医ち繧、繝励が繝悶ず繧ァ繧ッ繝医�縺昴l閾ェ菴薙′ Function 繧ェ繝悶ず繧ァ繧ッ繝医〒縺ゅj (縺昴� [[Class]] 縺� "Function" 縺ァ縺ゅk)縲∬オキ蜍輔&繧後◆譎ゅ€√←繧薙↑蠑墓焚繧ょ女縺台サ倥¢縲「ndefined 繧定ソ斐☆縲�

Function 繝励Ο繝医ち繧、繝励が繝悶ず繧ァ繧ッ繝医�蜀�Κ [[Prototype]] 繝励Ο繝代ユ繧」縺ョ蛟、縺ッ縲^bject 繝励Ο繝医ち繧、繝励が繝悶ず繧ァ繧ッ繝�(15.3.2.1) 縺ァ縺ゅk縲�

縺昴l縺ッ "遨コ縺ョ譛ャ譁�" 繧偵b縺、繝輔ぃ繝ウ繧ッ繧キ繝ァ繝ウ縺ァ縺ゅk; 蜻シ縺ウ蜃コ縺輔l繧後�縲∝腰縺ォ undefined 繧定ソ斐☆縲�

Function 繝励Ο繝医ち繧、繝励が繝悶ず繧ァ繧ッ繝医�縲∬�蛻��霄ォ縺ョ valueOf 繝励Ο繝代ユ繧」繧呈戟縺溘↑縺�; 縺�縺後€^bject 繝励Ο繝医ち繧、繝励が繝悶ず繧ァ繧ッ繝医� valueOf 繝励Ο繝代ユ繧」繧堤カ呎価縺吶k縲�

15.3.4.1 Function.prototype.constructor

Function.prototype.constructor 縺ョ蛻晄悄蛟、縺ッ縲∫オ�セシ縺ソ Function 繧ウ繝ウ繧ケ繝医Λ繧ッ繧ソ縺ァ縺ゅk縲�

15.3.4.2 Function.prototype.toString ( )

髢「謨ー縺ョ螳溯」�セ晏ュ倥�陦ィ迴セ縺瑚ソ斐&繧後k縲ゅ%縺ョ陦ィ迴セ縺ッ FunctionDeclaration 縺ョ讒区枚繧呈戟縺、縲り。ィ迴セ譁�ュ怜�蜀��遨コ逋ス縲∬。檎オらォッ蟄舌€√そ繝溘さ繝ュ繝ウ縺ョ菴ソ逕ィ蜿翫�驟咲スョ縺ッ螳溯」�セ晏ュ倥〒縺ゅk縺薙→縺ォ迚ケ縺ォ豕ィ諢上€�

toString 髢「謨ー縺ッ豎守畑逧�〒縺ッ縺ェ縺�; 縺昴� this 蛟、縺� Function 繧ェ繝悶ず繧ァ繧ッ繝医〒縺ェ縺代l縺ー縲∽セ句、� TypeError 繧呈兜縺偵k縲ゅ◎繧後f縺医€√Γ繧ス繝�ラ縺ィ縺励※莉悶�遞ョ鬘槭�繧ェ繝悶ず繧ァ繧ッ繝医↓霆「逕ィ縺ァ縺阪↑縺�€�

15.3.4.3 Function.prototype.apply (thisArg, argArray)

apply 繝。繧ス繝�ラ縺ッ 2 縺、縺ョ蠑墓焚縲� thisArg 縺翫h縺ウ argArray 繧偵→繧翫€√が繝悶ず繧ァ繧ッ繝医� [[Call]] 繝励Ο繝代ユ繧」繧剃スソ逕ィ縺励※縲�未謨ー蜻シ蜃コ縺励r螳溯。後☆繧九€ゅが繝悶ず繧ァ繧ッ繝医′ [[Call]] 繝励Ο繝代ユ繧」繧呈戟縺」縺ヲ縺�↑縺��エ蜷医€∽セ句、� TypeError 縺梧兜縺偵i繧後k縲�

thisArg 縺� null 縺セ縺溘� undefined 縺ョ蝣エ蜷医€∝他蜃コ縺輔l縺滄未謨ー縺ッ this 蛟、縺ィ縺励※繧ー繝ュ繝シ繝舌Ν繧ェ繝悶ず繧ァ繧ッ繝医r貂。縺輔l繧九€ゅ◎縺�〒縺ェ縺代l縺ー縲∝他蜃コ縺輔l縺滄未謨ー縺ッ this 蛟、縺ィ縺励※ ToObject(thisArg) 繧呈ク。縺輔l繧九€�

argArray 縺� null 縺セ縺溘� undefined 縺ョ蝣エ蜷医€∝他蜃コ縺輔l縺滄未謨ー縺ッ蠑墓焚繧呈ク。縺輔l縺ェ縺�€ゅ◎縺�〒縺ェ縺代l縺ー縲� argArray 縺碁�蛻励〒繧� arguments 繧ェ繝悶ず繧ァ繧ッ繝� (10.1.8 蜿ら�) 縺ァ繧ゅ↑縺��エ蜷医€∽セ句、� TypeError 縺梧兜縺偵i繧後k縲� argArray縺� 驟榊�縺セ縺溘� arugments 繧ェ繝悶ず繧ァ繧ッ繝医�縺�★繧後°縺ァ縺ゅk蝣エ蜷医€�未謨ー縺ッ (ToUint32(argArray.length)) 蛟九�蠑墓焚argArray[0], argArray[1], ... argArray[ToUint32(argArray.length)-1] 繧呈ク。縺輔l繧九€�

apply 繝。繧ス繝�ラ縺ョ length 繝励Ο繝代ユ繧」縺ッ 2 縺ァ縺ゅk縲�

15.3.4.4 Function.prototype.call (thisArg [ , arg1 [ , arg2, 窶ヲ ] ] )

call 繝。繧ス繝�ラ縺ッ 1 縺、莉・荳翫�蠑墓焚繧貞叙繧翫€�thisArg 縺翫h縺ウ(驕ク謚樒噪縺ォ) arg1, arg2, ... 繧偵→繧翫€√が繝悶ず繧ァ繧ッ繝医�[[Call]] 繝励Ο繝代ユ繧」繧剃スソ逕ィ縺励※縲�未謨ー蜻シ縺ウ蜃コ縺励r螳溯。後☆繧九€ゅが繝悶ず繧ァ繧ッ繝医′ [[Call]] 繝励Ο繝代ユ繧」繧呈戟縺」縺ヲ縺�↑縺��エ蜷医€ゝypeError 萓句、悶′謚輔£繧峨l繧九€ょ他蜃コ縺輔l縺滄未謨ー縺ッ縲∝シ墓焚縺ィ縺励※ arg1縲�arg2 縺ェ縺ゥ繧呈ク。縺輔l繧九€� thisArg 縺� null 縺セ縺溘� undefined 縺ョ蝣エ蜷医€∝他蜃コ縺輔l縺滄未謨ー縺ッ this 蛟、縺ィ縺励※繧ー繝ュ繝シ繝舌Ν繧ェ繝悶ず繧ァ繧ッ繝医r貂。縺輔l繧九€ゅ◎縺�〒縺ェ縺代l縺ー縲∝他蜃コ縺輔l縺滄未謨ー縺ッ this 蛟、縺ィ縺励※ ToObject(thisArg) 繧呈ク。縺輔l繧九€� call 繝。繧ス繝�ラ縺ョ length 繝励Ο繝代ユ繧」縺ッ 1 縺ァ縺ゅk縲�

15.3.5 Function 繧、繝ウ繧ケ繧ソ繝ウ繧ケ縺ョ繝励Ο繝代ユ繧」

蠢��医�蜀�Κ繝励Ο繝代ユ繧」縺ォ蜉�縺医※縲∝推繝輔ぃ繝ウ繧ッ繧キ繝ァ繝ウ螳滉ス薙� [[Call]] 繝励Ο繝代ユ繧」縲� [[Construct]] 繝励Ο繝代ユ繧」縲� [[Scope]] 繝励Ο繝代ユ繧」 (8.6.2 蜿翫� 13.2 繧貞盾辣ァ) 繧呈戟縺、縲�[[Class]] 繝励Ο繝代ユ繧」縺ョ蛟、縺ッ "Function" 縺ァ縺ゅk縲�

15.3.5.1 length

length 繝励Ο繝代ユ繧」縺ョ蛟、縺ッ騾壼クク縲�未謨ー縺ォ譛溷セ�&繧後k "蜈ク蝙狗噪縺ェ" 蠑墓焚縺ョ謨ー繧堤、コ縺呎紛謨ー\縺ァ縺ゅk縲ゅ□縺後€∬ィ€隱槭�縺昴l莉・螟悶�謨ー縺ョ蠑墓焚\縺ァ髢「謨ー縺悟他縺ウ蜃コ縺輔l繧九%縺ィ繧定ィア縺吶€�length 繝励Ο繝代ユ繧」縺ォ繧医▲縺ヲ謖�ョ壹&繧後k莉・螟悶�謨ー縺ョ蠑墓焚\縺ァ蜻シ縺ウ蜃コ縺輔l縺滓凾縺ョ髢「謨ー縺ョ謖ッ闊槭>縺ッ縲�未謨ー縺ォ萓晏ュ倥☆繧九€ゅ%縺ョ繝励Ο繝代ユ繧」縺ッ螻樊€ァ { DontDelete, ReadOnly, DontEnum } 縺ァ縺ゅk縲�

15.3.5.2 prototype

prototype 繝励Ο繝代ユ繧」縺ョ蛟、縺ッ縲:unction 繧ェ繝悶ず繧ァ繧ッ繝医′繧ウ繝ウ繧ケ繝医Λ繧ッ繧ソ縺ィ縺励※蜻シ蜃コ縺輔l繧句燕縺ォ縲∵眠縺励¥菴懈�縺輔l繧九が繝悶ず繧ァ繧ッ繝医�蜀�Κ [[prototype]] 繝励Ο繝代ユ繧」縺ョ蛻晄悄蛹悶↓菴ソ逕ィ縺輔l繧九€ゅ%縺ョ繝励Ο繝代ユ繧」縺ッ螻樊€ァ { DontDelete } 縺ァ縺ゅk縲�

15.3.5.3 [[HasInstance]] (V)

F 繧� Function 繧ェ繝悶ず繧ァ繧ッ繝医→莉ョ螳壹☆繧九€�F 縺ョ [[HasInstance]] 繝。繧ス繝�ラ縺悟€、 V 縺ァ蜻シ蜃コ縺輔l繧九→縺阪€∵ャ。縺ョ繧ケ繝�ャ繝励′蜿悶i繧後k��

  1. V 縺後が繝悶ず繧ァ繧ッ繝医〒縺ェ縺代l縺ー縲� false 繧定ソ斐☆縲�
  2. F 縺ョ [[Get]] 繝。繧ス繝�ラ繧偵€√�繝ュ繝代ユ繧」蜷� "prototype" 縺ァ蜻シ蜃コ縺吶€�
  3. O 繧� Result(2) 縺ィ縺吶k縲�
  4. O 縺後が繝悶ず繧ァ繧ッ繝医〒縺ェ縺代l縺ー縲ゝypeError 萓句、悶r謚輔£繧九€�
  5. V 繧� V 縺ョ [[Prototype]] 繝励Ο繝代ユ繧」縺ョ蛟、縺ィ縺吶k縲�
  6. V 縺� null 縺ェ繧峨�縲’alse 繧定ソ斐☆縲�
  7. O 縺ィ V 縺悟酔縺倥が繝悶ず繧ァ繧ッ繝医r蜿ら�縺励※縺�k縲√≠繧九>縺ッ
  8. 莠偵>縺ォ騾」邨舌&繧後◆繧ェ繝悶ず繧ァ繧ッ繝�(13.1.2)繧貞盾辣ァ縺励※縺�l縺ー縲》rue 繧定ソ斐☆縲�
  9. 繧ケ繝�ャ繝� 5 縺ク.

Page Contents

Issued: / Revised: / All rights reserved. © 2002-2016 TAKI