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

15.4 Array 繧ェ繝悶ず繧ァ繧ッ繝� (Array Objects)

Array 繧ェ繝悶ず繧ァ繧ッ繝医�繝励Ο繝代ユ繧」蜷阪�繧ッ繝ゥ繧ケ縺ォ迚ケ蛻・縺ェ謇ア縺�r荳弱∴繧九€ゅ�繝ュ繝代ユ繧」蜷� P (譁�ュ怜�蛟、蠖「蠑�) 縺ッ縲ゝoString(ToUint32(P)) 縺ィ P 縺檎ュ峨@縺上€√°縺、 ToUint32(P) 縺ィ 232-1 縺檎ュ峨@縺上↑縺��エ蜷医€��蛻励�繧、繝ウ繝�ャ繧ッ繧ケ縺ァ縺ゅj縲√°縺、縺薙�蝣エ蜷医↓髯舌i繧後k縲ょ推 Array 繧ェ繝悶ず繧ァ繧ッ繝医� length 繝励Ο繝代ユ繧」繧呈戟縺。縲√◎縺ョ蛟、縺ッ蟶ク縺ォ 232 譛ェ貅€縺ョ雋�縺ァ縺ェ縺�紛謨ー\縺ァ縺ゅk縲Mength 繝励Ο繝代ユ繧」縺ョ蛟、縺ッ驟榊�縺ョ繧、繝ウ繝�ャ繧ッ繧ケ縺ァ縺ゅk蜷��繝ュ繝代ユ繧」蜷阪h繧翫b謨ー蛟、逧�↓螟ァ縺阪>; Array 繧ェ繝悶ず繧ァ繧ッ繝医�繝励Ο繝代ユ繧」縺御ス懈�縺セ縺溘�螟画峩縺輔l繧九→縺阪�縲∽サ悶�繝励Ο繝代ユ繧」縺後%縺ョ荳榊、峨r邯ュ謖√☆繧句ソ�ヲ√°繧峨>縺、縺ァ繧りェソ謨エ縺輔l繧九€ら音蛻・縺ォ縲��蛻励�繧、繝ウ繝�ャ繧ッ繧ケ縺ョ繝励Ο繝代ユ繧」縺瑚ソス蜉�縺輔l繧九→縺阪�縺�▽縺ァ繧ゅ€〕ength 繝励Ο繝代ユ繧」縺ッ螟画峩縺輔l縲∝ソ�ヲ√〒縺ゅl縺ー縲��蛻励�繧、繝ウ繝�ャ繧ッ繧ケ縺ョ謨ー蛟、逧�↑蛟、繧医j螟ァ縺阪¥縺ェ繧�; 縺昴@縺ヲ length 繝励Ο繝代ユ繧」縺悟、画峩縺輔l繧九→縺�▽縺ァ繧ゅ€∵眠縺励> length 莉・荳翫�蛟、縺ョ驟榊�繧、繝ウ繝�ャ繧ッ繧ケ縺ョ蜷��繝ュ繝代ユ繧」縺ッ閾ェ蜍慕噪縺ォ蜑企勁縺輔l繧九€ゅ%縺ョ蛻カ邏�� Array 繧ェ繝悶ず繧ァ繧ッ繝郁�霄ォ縺ョ繝励Ο繝代ユ繧」縺ォ縺ョ縺ソ驕ゥ逕ィ縺輔l縲〕ength 繧�◎縺ョ prototype 縺九i邯呎価縺輔l縺�k驟榊�繧、繝ウ繝�ャ繧ッ繧ケ繝励Ο繝代ユ繧」縺ォ繧医▲縺ヲ縺ッ蠖ア髻ソ縺輔l縺ェ縺�€�

15.4.1 髢「謨ー縺ィ縺励※蜻シ蜃コ縺輔l繧� Array 繧ウ繝ウ繧ケ繝医Λ繧ッ繧ソ (The Array Constructor Called as a Function)

Array 縺後さ繝ウ繧ケ繝医Λ繧ッ繧ソ縺ィ縺励※縺ァ縺ッ縺ェ縺城未謨ー縺ィ縺励※蜻シ蜃コ縺輔l繧九↑繧峨�縲∵眠隕上↓ Array 繧ェ繝悶ず繧ァ繧ッ繝医r逕滓�縺励※蛻晄悄蛹悶☆繧九€る未謨ー蜻シ蜃コ縺� Array(...) 縺ッ縲∝酔縺伜シ墓焚繧呈戟縺、繧ェ繝悶ず繧ァ繧ッ繝育函謌仙シ� new Array(...) 縺ィ遲我セ。縺ァ縺ゅk縲�

15.4.1.1 Array ( [ item1 [ , item2 [ , ... ] ] ] )

Array 髢「謨ー縺悟他蜃コ縺輔l繧九→縲∵ャ。縺ョ繧ケ繝�ャ繝励′蜿悶i繧後k:

  1. 蜷後§蠑墓焚\縺ァ Array 繧ウ繝ウ繧ケ繝医Λ繧ッ繧ソ繧貞他蜃コ縺� (繧サ繧ッ繧キ繝ァ繝ウ 15.4.2) 縺ョ縺ィ蜈ィ縺丞酔讒倥↓縲∵眠隕� Array 繧ェ繝悶ず繧ァ繧ッ繝医r逕滓�縺励※霑斐☆縲�

15.4.2 Array 繧ウ繝ウ繧ケ繝医Λ繧ッ繧ソ (The Array Constructor)

Array 縺� new 蠑上�荳€驛ィ縺ィ縺励※蜻シ蜃コ縺輔l繧九→縺阪€√◎繧後�繧ウ繝ウ繧ケ繝医Λ繧ッ繧ソ縺ァ縺ゅk; 譁ー隕上↓逕滓�縺励◆繧ェ繝悶ず繧ァ繧ッ繝医r蛻晄悄蛹悶☆繧九€�

15.4.2.1 new Array ( [ item0 [ , item1 [ , ... ] ] ] )

縺薙�隱ャ譏弱�縲∝シ墓焚繧剃ク弱∴繧峨l縺ェ縺�°縲� 2 縺、莉・荳贋ク弱∴繧峨l繧� Array 繧ウ繝ウ繧ケ繝医Λ繧ッ繧ソ縺ォ驕ゥ逕ィ縺吶k縲�

譁ー隕上↓讒狗ッ峨&繧後◆繧ェ繝悶ず繧ァ繧ッ繝医� [[Prototype]] 繝励Ο繝代ユ繧」縺ッ縲� Array.prototype 縺ョ蛻晄悄蛟、 (縺帙¥縺励g繧� 15.4.3.1) 縺ァ縺ゅk縲√が繝ェ繧ク繝翫Ν縺ョ Array 繝励Ο繝医ち繧、繝励が繝悶ず繧ァ繧ッ繝医↓險ュ螳壹&繧後k縲�

譁ー隕上↓讒狗ッ峨&繧後◆繧ェ繝悶ず繧ァ繧ッ繝医� [[Class]] 繝励Ο繝代ユ繧」縺ッ縲� "Array" 縺ォ險ュ螳壹&繧後k縲よ眠隕上↓讒狗ッ峨&繧後◆繧ェ繝悶ず繧ァ繧ッ繝医� length 繝励Ο繝代ユ繧」縺ッ縲∝シ墓焚縺ョ謨ー縺ォ險ュ螳壹&繧後k縲�

譁ー隕上↓讒狗ッ峨&繧後◆繧ェ繝悶ず繧ァ繧ッ繝医� 0 繝励Ο繝代ユ繧」縺ッ縲� (萓帷オヲ縺輔l縺�) item0 縺ォ險ュ螳壹&繧後k; 譁ー隕上↓讒狗ッ峨&繧後◆繧ェ繝悶ず繧ァ繧ッ繝医� 1 繝励Ο繝代ユ繧」縺ッ縲�(繧ゅ@萓帷オヲ縺輔l繧後�) item1 縺ォ險ュ螳壹&繧後k; 縺昴@縺ヲ縲∽ク€闊ャ縺ォ縲√◎縺薙↓縺ゅk縺ョ縺ィ蜷後§縺�縺代�蠑墓焚縺ォ蟇セ縺励※縲∵眠隕上↓讒狗ッ峨&繧後◆繧ェ繝悶ず繧ァ繧ッ繝医� k 繝励Ο繝代ユ繧」縺ッ縲∫ャャ荳€蠑墓焚繧貞シ墓焚逡ェ蜿キ 0 縺ィ閠�∴縺ヲ蠑墓焚 k 縺ォ險ュ螳壹&繧後k縲�

15.4.2.2 new Array (len)

譁ー隕上↓讒狗ッ峨&繧後k繧ェ繝悶ず繧ァ繧ッ繝医� [[Prototype]] 繝励Ο繝代ユ繧」縺ッ縲、rray.prototype (繧サ繧ッ繧キ繝ァ繝ウ 15.4.3.1) 縺ョ蛻晄悄蛟、縺ァ縺ゅk縲√が繝ェ繧ク繝翫Ν縺ョ Array 繝励Ο繝医ち繧、繝励が繝悶ず繧ァ繧ッ繝医↓險ュ螳壹&繧後k縲よ眠隕上↓讒狗ッ峨&繧後k繧ェ繝悶ず繧ァ繧ッ繝医� [[Class]] 繝励Ο繝代ユ繧」縺ッ "Array" 縺ォ險ュ螳壹&繧後k縲�

蠑墓焚 len 縺� Number 縺ァ縲√°縺、 ToUint32(len) 縺� len 縺ィ遲峨@縺代l縺ー縲∵眠隕上↓讒狗ッ峨&繧後k繧ェ繝悶ず繧ァ繧ッ繝医� length 繝励Ο繝代ユ繧」縺ッ縲� ToUint32(len) 縺ォ險ュ螳壹&繧後k縲ょシ墓焚 len 縺� Number 縺ァ縲√°縺、 ToUint32(len) 縺� len 縺ィ遲峨@縺上↑縺代l縺ー縲∽セ句、� RangeError 縺梧兜縺偵i繧後k縲�

蠑墓焚 len 縺� Number 縺ァ縺ェ縺代l縺ー縲∵眠隕上↓讒狗ッ峨&繧後k繧ェ繝悶ず繧ァ繧ッ繝医� length 繝励Ο繝代ユ繧」縺ッ 1 縺ォ險ュ螳壹&繧後€∵眠隕上↓讒狗ッ峨&繧後k繧ェ繝悶ず繧ァ繧ッ繝医� 0 繝励Ο繝代ユ繧」縺ッ縲� len 縺ォ險ュ螳壹&繧後k縲�

15.4.3 Array 繧ウ繝ウ繧ケ繝医Λ繧ッ繧ソ縺ョ繝励Ο繝代ユ繧」 (Properties of the Array Constructor)

Array 繧ウ繝ウ繧ケ繝医Λ繧ッ繧ソ縺ョ蜀�Κ [[Prototype]] 繝励Ο繝代ユ繧」縺ョ蛟、縺ッ縲� Function 繝励Ο繝医ち繧、繝励が繝悶ず繧ァ繧ッ繝� (繧サ繧ッ繧キ繝ァ繝ウ 15.3.4) 縺ァ縺ゅk縲�

蜀�Κ繝励Ο繝代ユ繧」蜿翫� length 繝励Ο繝代ユ繧」 (蛟、縺ッ 1 ) 縺ョ莉悶↓縲、rray 繧ウ繝ウ繧ケ繝医Λ繧ッ繧ソ縺ッ谺。縺ョ繝励Ο繝代ユ繧」繧呈戟縺、:

15.4.3.1 Array.prototype

Array.prototype 縺ョ蛻晄悄蛟、縺ッ Array 繝励Ο繝医ち繧、繝励が繝悶ず繧ァ繧ッ繝� (繧サ繧ッ繧キ繝ァ繝ウ 15.4.4) 縺ァ縺ゅk縲�

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

15.4.4 Array 繝励Ο繝医ち繧、繝励が繝悶ず繧ァ繧ッ繝医�繝励Ο繝代ユ繧」 (Properties of the Array Prototype Object)

Array 繝励Ο繝医ち繧、繝励が繝悶ず繧ァ繧ッ繝医�蜀�Κ [[Prototype]] 繝励Ο繝代ユ繧」縺ョ蛟、縺ッ縲� Object 繝励Ο繝医ち繧、繝励が繝悶ず繧ァ繧ッ繝� (繧サ繧ッ繧キ繝ァ繝ウ 15.2.3.1) 縺ァ縺ゅk縲�

Array 繝励Ο繝医ち繧、繝励が繝悶ず繧ァ繧ッ繝医�縺昴l閾ェ霄ォ縺碁�蛻励〒縺ゅk; 縺昴� [[Class]] 縺ッ "Array" 縺ァ縲� length 繝励Ο繝代ユ繧」 (蛻晄悄蛟、縺ッ +0) 縺ィ繧サ繧ッ繧キ繝ァ繝ウ 15.4.5.1 縺ォ霑ー縺ケ繧狗音谿翫↑蜀�Κ [[Put]] 繝。繧ス繝�ラ繧呈戟縺、縲�

繝励Ο繝医ち繧、繝励が繝悶ず繧ァ繧ッ繝医�繝励Ο繝代ユ繧」縺ァ縺ゅk髢「謨ー縺ョ隱ャ譏弱↓縺翫>縺ヲ縲∽サ・髯阪ヵ繝ャ繝シ繧コ "縺薙�繧ェ繝悶ず繧ァ繧ッ繝�" 縺ッ髢「謨ー螳滓命縺ョ this 蛟、縺ァ縺ゅk繧ェ繝悶ず繧ァ繧ッ繝医r蜿ら�縺吶k縲ょ�驛ィ [[Class]] 繝励Ο繝代ユ繧」縺ョ蛟、縺� "Array" 縺ァ縺ェ縺�が繝悶ず繧ァ繧ッ繝医〒縺ゅk縺薙→縺� this 縺ォ險ア蜿ッ縺輔l繧九€�

NOTE Array 繝励Ο繝医ち繧、繝励が繝悶ず繧ァ繧ッ繝医�迢ャ閾ェ縺ョ valueOf 繝励Ο繝代ユ繧」繧呈戟縺溘↑縺�; 縺�縺後€� valueOf 繝励Ο繝代ユ繧」繧� Object 繝励Ο繝医ち繧、繝励が繝悶ず繧ァ繧ッ繝医°繧臥カ呎価縺吶k縲�

15.4.4.1 Array.prototype.constructor

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

15.4.4.2 Array.prototype.toString ( )

縺薙�髢「謨ー縺ョ蜻シ縺ウ蜃コ縺励�邨先棡縺ッ縲√%縺ョ繧ェ繝悶ず繧ァ繧ッ繝医↓邨�セシ縺ソ join 繝。繧ス繝�ラ繧貞シ墓焚辟。縺励〒蜻シ蜃コ縺吶�縺ィ蜷梧ァ倥〒縺ゅk縲�

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

15.4.4.3 Array.prototype.toLocaleString ( )

驟榊�隕∫エ�縺ッ toLocaleString 繝。繧ス繝�ラ縺ァ譁�ュ怜�縺ォ螟画鋤縺輔l縲√◎繧後i縺ョ譁�ュ怜�縺ッ騾」邨舌&繧後€∝ョ溯」�′螳夂セゥ縺吶k繝ュ繧ア繝シ繝ォ迚ケ螳壹�譁ケ豕輔〒蠑輔″蜃コ縺輔l繧句�髮「蟄先枚蟄怜�縺ァ蛻�屬縺輔l繧九€ゅ%縺ョ髢「謨ー縺ョ蜻シ蜃コ縺励�邨先棡縺ッ縲� toString 縺ョ邨先棡縺ォ鬘樔シシ縺吶k縺薙→縺梧э蝗ウ縺輔l繧九′縲√%縺ョ髢「謨ー縺ョ邨先棡縺ッ繝ュ繧ア繝シ繝ォ迚ケ螳壹〒縺ゅk縺薙→縺梧э蝗ウ縺輔l繧九€�

邨先棡縺ッ谺。縺ョ繧医≧縺ォ險育ョ励&繧後k:

  1. 縺薙�繧ェ繝悶ず繧ァ繧ッ繝医� [[Get]] 繝。繧ス繝�ラ繧貞シ墓焚 "length" 縺ァ蜻シ蜃コ縺吶€�
  2. ToUint32(Result(1)) 繧貞他蜃コ縺吶€�
  3. separator 繧偵�繧ケ繝育腸蠅��迴セ蝨ィ縺ョ繝ュ繧ア繝シ繝ォ縺ォ鄂ョ縺�※驕ゥ蠖薙↑繝ェ繧ケ繝亥�髮「譁�ュ怜� (縺薙l縺ッ螳溯」�′螳夂セゥ縺吶k譁ケ豕輔〒蠑輔″蜃コ縺輔l繧�) 縺ィ縺吶k縲�
  4. ToString(separator) 繧貞他蜃コ縺吶€�
  5. Result(2) 縺� 0 縺ェ繧峨�縲∫ゥコ譁�ュ怜�繧定ソ斐☆縲�
  6. 縺薙�繧ェ繝悶ず繧ァ繧ッ繝医� [[Get]] 繝。繧ス繝�ラ繧貞シ墓焚 "0" 縺ァ蜻シ蜃コ縺吶€�
  7. Result(6) 縺� undefined 縺� null 縺ェ繧峨�縲∫ゥコ譁�ュ怜�繧剃スソ逕ィ縺吶k; 縺昴≧縺ァ縺ェ縺代l縺ー縲� ToObject(Result(6)).toLocaleString() 繧貞他蜃コ縺吶€�
  8. R 繧� Result(7) 縺ィ縺吶k縲�
  9. k 繧� 1 縺ィ縺吶k縲�
  10. k 縺� Result(2) 縺ィ遲峨@縺代l縺ー縲� R 繧定ソ斐☆縲�
  11. R 縺ィ Result(4) 縺ョ騾」邨舌〒逕滓�縺輔l繧区枚蟄怜�蛟、繧� R 縺ィ縺吶k縲�
  12. 縺薙�繧ェ繝悶ず繧ァ繧ッ繝医� [[Get]] 繝。繧ス繝�ラ繧貞シ墓焚 ToString(k) 縺ァ蜻シ蜃コ縺吶€�
  13. Result(12) 縺� undefined 縺� null 縺ェ繧峨�縲∫ゥコ譁�ュ怜�繧剃スソ逕ィ縺吶k; 縺昴≧縺ァ縺ェ縺代l縺ー縲� ToObject(Result(12)).toLocaleString() 繧貞他蜃コ縺吶€�
  14. S 縺ィ Result(13) 縺ョ騾」邨舌〒逕滓�縺輔l繧区枚蟄怜�蛟、繧� R 縺ィ縺吶k縲�
  15. k 繧� 1 蠅怜�縺吶k縲�
  16. 繧ケ繝�ャ繝� 10 縺ク縲�

toLocaleString 髢「謨ー縺ッ豎守畑逧�〒縺ッ縺ェ縺�; this 蛟、縺� Array 繧ェ繝悶ず繧ァ繧ッ繝医〒縺ェ縺代l縺ー縲∽セ句、� TypeError 繧呈兜縺偵k縲� 縺昴l繧�∴縲∽サ悶�遞ョ鬘槭�繧ェ繝悶ず繧ァ繧ッ繝医↓繝。繧ス繝�ラ縺ィ縺励※霆「逕ィ縺ァ縺阪↑縺�€�

NOTE 縺薙�髢「謨ー縺ョ隨ャ荳€繝代Λ繝。繝シ繧ソ縺ッ縲√%縺ョ讓呎コ悶�蟆�擂縺ョ繝舌�繧ク繝ァ繝ウ縺ァ菴ソ逕ィ縺輔l繧句庄閭ス諤ァ縺後≠繧�; 螳溯」��縺薙�繝代Λ繝。繝シ繧ソ繧剃サ悶�逕ィ騾斐↓菴ソ逕ィ縺励↑縺�%縺ィ繧呈耳螂ィ縺吶k縲�

15.4.4.4 Array.prototype.concat ( [ item1 [ , item2 [ , ... ] ] ] )

concat 繝。繧ス繝�ラ縺� 0 蛟倶サ・荳翫�蠑墓焚 item1, item2, etc. 縺ァ蜻シ蜃コ縺輔l繧九→縲���↓蜷�シ墓焚縺ョ驟榊�隕∫エ�縺檎カ壹¥縲√が繝悶ず繧ァ繧ッ繝医�驟榊�隕∫エ�縺ァ讒区�縺輔l繧矩�蛻励r霑斐☆縲�

谺。縺ョ繧ケ繝�ャ繝励′蜿悶i繧後k:

  1. A 繧偵€∝シ� new Array() 縺ィ蜷梧ァ倥↓逕滓�縺輔l縺滓眠隕城�蛻励→縺吶k縲�
  2. n 繧� 0 縺ィ縺吶k縲�
  3. E 繧� 縺薙�繧ェ繝悶ず繧ァ繧ッ繝医→縺吶k縲�
  4. E 縺� Array 繧ェ繝悶ず繧ァ繧ッ繝医〒縺ェ縺代l縺ー縲� 繧ケ繝�ャ繝� 16 縺ク縲�
  5. k 繧� 0 縺ィ縺吶k縲�
  6. E 縺ョ [[Get]] 繝。繧ス繝�ラ繧偵€∝シ墓焚 "length" 縺ァ蜻シ蜃コ縺吶€�
  7. k 縺ィ Result(6) 縺檎ュ峨@縺代l縺ー縲√せ繝�ャ繝� 19 縺ク縲�
  8. ToString(k) 繧貞他蜃コ縺吶€�
  9. E 縺� Result(8) 縺ィ縺�≧蜷榊燕縺ョ繝励Ο繝代ユ繧」繧呈戟縺、縺ェ繧峨�縲√せ繝�ャ繝� 10 縺ク縲� E 縺� Result(8) 縺ィ縺�≧蜷榊燕縺ョ繝励Ο繝代ユ繧」繧呈戟縺溘↑縺�↑繧峨�縲� 繧ケ繝�ャ繝� 13 縺ク縲�
  10. ToString(n) 繧貞他蜃コ縺吶€�
  11. E 縺ョ [[Get]] 繝。繧ス繝�ラ繧偵€∝シ墓焚 Result(8) 縺ァ蜻シ蜃コ縺吶€�
  12. A 縺ョ [[Put]] 繝。繧ス繝�ラ繧偵€∝シ墓焚 Result(10) 縺ィ Result(11) 縺ァ蜻シ蜃コ縺吶€�
  13. n 繧� 1 蠅怜�縺吶k縲�
  14. k 繧� 1 蠅怜�縺吶k縲�
  15. 繧ケ繝�ャ繝� 7 縺ク縲�
  16. ToString(n) 繧貞他蜃コ縺吶€�
  17. A 縺ョ [[Put]] 繝。繧ス繝�ラ繧偵€∝シ墓焚 Result(16) 縺ィ E 縺ァ蜻シ蜃コ縺吶€�
  18. n 繧� 1 蠅怜�縺吶k縲�
  19. 蠑墓焚繝ェ繧ケ繝医°繧画ャ。縺ョ蠑墓焚繧貞叙蠕励☆繧�; 縺薙l莉・荳雁シ墓焚縺後↑縺代l縺ー縲√せ繝�ャ繝� 22 縺ク縲�
  20. E 繧� Result(19) 縺ィ縺吶k縲�
  21. 繧ケ繝�ャ繝� 4 縺ク縲�
  22. A 縺ョ [[Put]] 繝。繧ス繝�ラ繧偵€∝シ墓焚 "length" 縺ィ n 縺ァ蜻シ蜃コ縺吶€�
  23. A 繧定ソ斐☆縲�

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

NOTE concat 髢「謨ー縺ッ謨�э縺ォ縺ォ豎守畑逧�〒縺ゅk; this 蛟、縺� Array 繧ェ繝悶ず繧ァ繧ッ繝医〒縺ゅk縺薙→繧定ヲ∵アゅ&繧後↑縺�€ゅ◎繧後f縺医€∽サ悶�遞ョ鬘槭�繧ェ繝悶ず繧ァ繧ッ繝医↓繝。繧ス繝�ラ縺ィ縺励※霆「逕ィ蜿ッ閭ス縺ァ縺ゅk縲� concat 髢「謨ー縺� host 繧ェ繝悶ず繧ァ繧ッ繝医↓縺�∪縺城←逕ィ縺ァ縺阪k縺九←縺�°縺ッ縲∝ョ溯」�セ晏ュ倥〒縺ゅk縲�

15.4.4.5 Array.prototype.join (separator)

驟榊�隕∫エ�縺ッ譁�ュ怜�縺ォ螟画鋤縺輔l縲∵枚蟄怜�縺ッ騾」邨舌&繧後€� separator 縺ァ蛻�屬縺輔l繧九€� separator 縺梧署萓帙&繧後↑縺�↑繧峨�縲� 1 縺、縺ョ繧ォ繝ウ繝槭′ separator 縺ォ逕ィ縺�i繧後k縲�

join 繝。繧ス繝�ラ縺ッ蠑墓焚 separator 繧偵→繧翫€∵ャ。縺ョ繧ケ繝�ャ繝励r螳溯。後☆繧�:

  1. 縺薙�繧ェ繝悶ず繧ァ繧ッ繝� 縺ョ [[Get]] 繝。繧ス繝�ラ繧偵€∝シ墓焚 "length" 縺ァ蜻シ蜃コ縺吶€�
  2. ToUint32(Result(1)) 繧貞他蜃コ縺吶€�
  3. separator 縺� undefined 縺ェ繧峨�縲� separator 繧� 1 譁�ュ励�譁�ュ怜� "," 縺ィ縺吶k縲�
  4. ToString(separator) 繧貞他蜃コ縺吶€�
  5. Result(2) 縺� 0 縺ェ繧峨�縲∫ゥコ譁�ュ怜�繧定ソ斐☆縲�
  6. 縺薙�繧ェ繝悶ず繧ァ繧ッ繝� 縺ョ [[Get]] 繝。繧ス繝�ラ繧偵€∝シ墓焚 "0" 縺ァ蜻シ蜃コ縺吶€�
  7. Result(6) 縺� undefined 縺� null 縺ェ繧峨�縲� 遨コ譁�ュ怜�繧堤畑縺�k; 縺昴≧縺ァ縺ェ縺代l縺ー縲� ToString(Result(6)) 繧貞他蜃コ縺吶€�
  8. R 繧� Result(7) 縺ィ縺吶k縲�
  9. k 繧� 1 縺ィ縺吶k縲�
  10. k 縺� Result(2) 縺檎ュ峨@縺代l縺ー縲� R 繧定ソ斐☆縲�
  11. S 繧偵€� R 縺ィ Result(4) 繧帝€」邨舌@縺ヲ逕滓�縺輔l繧区枚蟄怜�蛟、縺ィ縺吶k縲�
  12. 縺薙�繧ェ繝悶ず繧ァ繧ッ繝� 縺ョ [[Get]] 繝。繧ス繝�ラ繧偵€∝シ墓焚 ToString(k) 縺ァ蜻シ蜃コ縺吶€�
  13. Result(12) 縺� undefined 縺� null 縺ェ繧峨�縲∫ゥコ譁�ュ怜�繧堤畑縺�k; 縺昴≧縺ァ縺ェ縺代l縺ー縲� ToString(Result(12)) 繧貞他蜃コ縺吶€�
  14. R 繧偵€� S 縺ィ Result(13) 繧帝€」邨舌@縺ヲ逕滓�縺輔l繧区枚蟄怜�蛟、縺ィ縺吶k縲�
  15. k 繧� 1 蠅怜�縺吶k縲�
  16. 繧ケ繝�ャ繝� 10 縺ク縲�

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

NOTE join 髢「謨ー縺ッ謨�э縺ォ豎守畑逧�〒縺ゅk; this 蛟、縺� Array 繧ェ繝悶ず繧ァ繧ッ繝医〒縺ゅk縺薙→繧定ヲ∵アゅ&繧後↑縺�€ゅ◎繧後f縺医€∽サ悶�遞ョ鬘槭�繧ェ繝悶ず繧ァ繧ッ繝医↓繝。繧ス繝�ラ縺ィ縺励※霆「逕ィ蜿ッ閭ス縺ァ縺ゅk縲� join 髢「謨ー縺� host 繧ェ繝悶ず繧ァ繧ッ繝医↓縺�∪縺城←逕ィ縺ァ縺阪k縺九←縺�°縺ッ縲∝ョ溯」�セ晏ュ倥〒縺ゅk縲�

15.4.4.6 Array.prototype.pop ( )

驟榊�縺ョ譛€蠕後�隕∫エ�縺碁�蛻励°繧牙叙繧企勁縺九l縲∬ソ斐&繧後k縲�

  1. 縺薙�繧ェ繝悶ず繧ァ繧ッ繝� 縺ョ [[Get]] 繝。繧ス繝�ラ繧偵€∝シ墓焚 "length" 縺ァ蜻シ蜃コ縺吶€�
  2. ToUint32(Result(1)) 繧貞他蜃コ縺吶€�
  3. Result(2) 縺� 0 莉・螟悶↑繧峨�縲� 繧ケ繝�ャ繝� 6 縺ク縲�
  4. 縺薙�繧ェ繝悶ず繧ァ繧ッ繝� 縺ョ [[Put]] 繝。繧ス繝�ラ繧偵€∝シ墓焚 "length" 縺ィ Result(2) 縺ァ蜻シ蜃コ縺吶€�
  5. undefined 繧定ソ斐☆縲�
  6. ToString(Result(2)-1) 繧貞他蜃コ縺吶€�
  7. 縺薙�繧ェ繝悶ず繧ァ繧ッ繝� 縺ョ [[Get]] 繝。繧ス繝�ラ繧偵€∝シ墓焚 Result(6) 縺ァ蜻シ蜃コ縺吶€�
  8. 縺薙�繧ェ繝悶ず繧ァ繧ッ繝� 縺ョ [[Delete]] 繝。繧ス繝�ラ繧偵€∝シ墓焚 Result(6) 縺ァ蜻シ蜃コ縺吶€�
  9. 縺薙�繧ェ繝悶ず繧ァ繧ッ繝� 縺ョ [[Put]] 繝。繧ス繝�ラ繧偵€∝シ墓焚 "length" 縺ィ (Result(2)-1) 縺ァ蜻シ蜃コ縺吶€�
  10. Result(7) 繧定ソ斐☆縲�

NOTE pop 髢「謨ー縺ッ謨�э縺ォ縺ォ豎守畑逧�〒縺ゅk; this 蛟、縺� Array 繧ェ繝悶ず繧ァ繧ッ繝医〒縺ゅk縺薙→繧定ヲ∵アゅ&繧後↑縺�€ゅ◎繧後f縺医€∽サ悶�遞ョ鬘槭�繧ェ繝悶ず繧ァ繧ッ繝医↓繝。繧ス繝�ラ縺ィ縺励※霆「逕ィ蜿ッ閭ス縺ァ縺ゅk縲� pop 髢「謨ー縺� host 繧ェ繝悶ず繧ァ繧ッ繝医↓縺�∪縺城←逕ィ縺ァ縺阪k縺九←縺�°縺ッ縲∝ョ溯」�セ晏ュ倥〒縺ゅk縲�

15.4.4.7 Array.prototype.push ( [ item1 [ , item2 [ , ... ] ] ] )

蠑墓焚縺悟�迴セ縺励◆鬆�↓驟榊�縺ョ譛ォ蟆セ縺ォ霑ス蜉�縺輔l繧九€ょ他蜃コ縺励�邨先棡縺ィ縺励※縲∵眠縺励>驟榊�縺ョ髟キ縺輔′霑斐&繧後k縲�

push 繝。繧ス繝�ラ縺� 0 蛟倶サ・荳翫�蠑墓焚 item1, item2, etc. 縺ァ蜻シ蜃コ縺輔l繧九→縲∵ャ。縺ョ繧ケ繝�ャ繝励′蜿悶i繧後k:

  1. 縺薙�繧ェ繝悶ず繧ァ繧ッ繝� 縺ョ [[Get]] 繝。繧ス繝�ラ繧偵€∝シ墓焚 "length" 縺ァ蜻シ蜃コ縺吶€�
  2. n 繧� ToUint32(Result(1)) 蜻シ蜃コ縺励�邨先棡縺ィ縺吶k縲�
  3. 蠑墓焚繝ェ繧ケ繝医°繧画ャ。縺ョ蠑墓焚繧貞叙蠕励☆繧�; 縺薙l莉・荳雁シ墓焚縺後↑縺代l縺ー縲� 繧ケ繝�ャ繝� 7 縺ク縲�
  4. 縺薙�繧ェ繝悶ず繧ァ繧ッ繝� 縺ョ [[Put]] 繝。繧ス繝�ラ繧偵€∝シ墓焚 ToString(n) 縺ィ Result(3) 縺ァ蜻シ蜃コ縺吶€�
  5. n 繧� 1 蠅怜�縺吶k縲�
  6. 繧ケ繝�ャ繝� 3 縺ク縲�
  7. 縺薙�繧ェ繝悶ず繧ァ繧ッ繝� 縺ョ [[Put]] 繝。繧ス繝�ラ繧偵€∝シ墓焚 "length" 縺ィ n 縺ァ蜻シ蜃コ縺吶€�
  8. n 繧定ソ斐☆縲�

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

NOTE push 髢「謨ー縺ッ謨�э縺ォ縺ォ豎守畑逧�〒縺ゅk; this 蛟、縺� Array 繧ェ繝悶ず繧ァ繧ッ繝医〒縺ゅk縺薙→繧定ヲ∵アゅ&繧後↑縺�€ゅ◎繧後f縺医€∽サ悶�遞ョ鬘槭�繧ェ繝悶ず繧ァ繧ッ繝医↓繝。繧ス繝�ラ縺ィ縺励※霆「逕ィ蜿ッ閭ス縺ァ縺ゅk縲� pust 髢「謨ー縺� host 繧ェ繝悶ず繧ァ繧ッ繝医↓縺�∪縺城←逕ィ縺ァ縺阪k縺九←縺�°縺ッ縲∝ョ溯」�セ晏ュ倥〒縺ゅk縲�

15.4.4.8 Array.prototype.reverse ( )

驟榊�隕∫エ�縺ッ鬆�コ上r騾�↓蜀咲キィ縺輔l繧九€ょ他蜃コ縺励�邨先棡縺ィ縺励※繧ェ繝悶ず繧ァ繧ッ繝医′霑斐&繧後k縲�

  1. 蠑墓焚 "length" 縺ァ縲√%縺ョ繧ェ繝悶ず繧ァ繧ッ繝医� [[Get]] 繝。繧ス繝�ラ繧貞他蜃コ縺吶€�
  2. ToUint32(Result(1)) 繧貞他蜃コ縺吶€�
  3. floor(Result(2)/2) 繧堤ョ怜�縺吶k縲�
  4. k 繧� 0 縺ィ縺吶k縲�
  5. k 縺� Result(3) 縺ィ遲峨@縺代l縺ー縲√%縺ョ繧ェ繝悶ず繧ァ繧ッ繝医r霑斐☆縲�
  6. Result(2)-k-1 繧堤ョ怜�縺吶k縲�
  7. ToString(k) 繧貞他蜃コ縺吶€�
  8. ToString(Result(6)) 繧貞他蜃コ縺吶€�
  9. 蠑墓焚 Result(7) 縺ァ縲√%縺ョ繧ェ繝悶ず繧ァ繧ッ繝医� [[Get]] 繝。繧ス繝�ラ繧貞他蜃コ縺吶€�
  10. 蠑墓焚 Result(8) 縺ァ縲√%縺ョ繧ェ繝悶ず繧ァ繧ッ繝医� [[Get]] 繝。繧ス繝�ラ繧貞他蜃コ縺吶€�
  11. 縺薙�繧ェ繝悶ず繧ァ繧ッ繝医′ Result(8) 縺ィ縺�≧蜷榊燕縺ョ繝励Ο繝代ユ繧」繧呈戟縺溘↑縺代l縺ー縲√せ繝�ャ繝� 19 縺ク縲�
  12. 縺薙�繧ェ繝悶ず繧ァ繧ッ繝医′ Result(7) 縺ィ縺�≧蜷榊燕縺ョ繝励Ο繝代ユ繧」繧呈戟縺溘↑縺代l縺ー縲√せ繝�ャ繝� 16 縺ク縲�
  13. 蠑墓焚 Result(7) 縺ィ Result(10) 縺ァ縲√%縺ョ繧ェ繝悶ず繧ァ繧ッ繝医� [[Put]] 繝。繧ス繝�ラ繧貞他蜃コ縺吶€�
  14. 蠑墓焚 Result(8) 縺ィ Result(9) 縺ァ縲√%縺ョ繧ェ繝悶ず繧ァ繧ッ繝医� [[Put]] 繝。繧ス繝�ラ繧貞他蜃コ縺吶€�
  15. 繧ケ繝�ャ繝� 25 縺ク縲�
  16. 蠑墓焚 Result(7) 縺ィ Result(10) 縺ァ縲√%縺ョ繧ェ繝悶ず繧ァ繧ッ繝医� [[Put]] 繝。繧ス繝�ラ繧貞他蜃コ縺吶€�
  17. 蜑企勁縺吶k繝励Ο繝代ユ繧」蜷阪→縺励※ Result(8) 繧呈署萓帙@縺ヲ縲√%縺ョ繧ェ繝悶ず繧ァ繧ッ繝医� [[Delete]] 繝。繧ス繝�ラ繧貞他蜃コ縺吶€�
  18. 繧ケ繝�ャ繝� 25 縺ク縲�
  19. 縺薙�繧ェ繝悶ず繧ァ繧ッ繝医′ Result(7) 縺ィ縺�≧蜷榊燕縺ョ繝励Ο繝代ユ繧」繧呈戟縺溘↑縺代l縺ー縲√せ繝�ャ繝� 23 縺ク縲�
  20. 蜑企勁縺吶k繝励Ο繝代ユ繧」蜷阪→縺励※ Result(7) 繧呈署萓帙@縺ヲ縲√%縺ョ繧ェ繝悶ず繧ァ繧ッ繝医� [[Delete]] 繝。繧ス繝�ラ繧貞他蜃コ縺吶€�
  21. 蠑墓焚 Result(8) 縺ィ Result(9) 縺ァ縲√%縺ョ繧ェ繝悶ず繧ァ繧ッ繝医� [[Put]] 繝。繧ス繝�ラ繧貞他蜃コ縺吶€�
  22. 繧ケ繝�ャ繝� 25 縺ク縲�
  23. 蜑企勁縺吶k繝励Ο繝代ユ繧」蜷阪→縺励※ Result(7) 繧呈署萓帙@縺ヲ縲√%縺ョ繧ェ繝悶ず繧ァ繧ッ繝医� [[Delete]] 繝。繧ス繝�ラ繧貞他蜃コ縺吶€�
  24. 蜑企勁縺吶k繝励Ο繝代ユ繧」蜷阪→縺励※ Result(8) 繧呈署萓帙@縺ヲ縲√%縺ョ繧ェ繝悶ず繧ァ繧ッ繝医� [[Delete]] 繝。繧ス繝�ラ繧貞他蜃コ縺吶€�
  25. k 繧� 1 蠅怜刈縺輔○繧九€�
  26. 繧ケ繝�ャ繝� 5 縺ク縲�

NOTE reverse 髢「謨ー縺ッ謨�э縺ォ縺ォ豎守畑逧�〒縺ゅk; this 蛟、縺� Array 繧ェ繝悶ず繧ァ繧ッ繝医〒縺ゅk縺薙→繧定ヲ∵アゅ&繧後↑縺�€ゅ◎繧後f縺医€∽サ悶�遞ョ鬘槭�繧ェ繝悶ず繧ァ繧ッ繝医↓繝。繧ス繝�ラ縺ィ縺励※霆「逕ィ蜿ッ閭ス縺ァ縺ゅk縲� reverse 髢「謨ー縺� host 繧ェ繝悶ず繧ァ繧ッ繝医↓縺�∪縺城←逕ィ縺ァ縺阪k縺九←縺�°縺ッ縲∝ョ溯」�セ晏ュ倥〒縺ゅk縲�

15.4.4.9 Array.prototype.shift ( )

驟榊�縺ョ譛€蛻昴�隕∫エ�縺碁�蛻励°繧牙叙繧企勁縺九l縲∬ソ斐&繧後k縲�

  1. 縺薙�繧ェ繝悶ず繧ァ繧ッ繝� 縺ョ [[Get]] 繝。繧ス繝�ラ繧偵€∝シ墓焚 "length" 縺ァ蜻シ蜃コ縺吶€�
  2. ToUint32(Result(1)) 繧貞他蜃コ縺吶€�
  3. Result(2) 縺� 0 莉・螟悶↑繧峨�縲� 繧ケ繝�ャ繝� 6 縺ク縲�
  4. 縺薙�繧ェ繝悶ず繧ァ繧ッ繝� 縺ョ [[Put]] 繝。繧ス繝�ラ繧偵€∝シ墓焚 "length" 縺ィ Result(2) 縺ァ蜻シ蜃コ縺吶€�
  5. undefined 繧定ソ斐☆縲�
  6. 縺薙�繧ェ繝悶ず繧ァ繧ッ繝� 縺ョ [[Get]] 繝。繧ス繝�ラ繧偵€∝シ墓焚 0 縺ァ蜻シ蜃コ縺吶€�
  7. k 繧� 1 縺ィ縺吶k縲�
  8. k 縺� Result(2) 縺ィ遲峨@縺代l縺ー縲� 繧ケ繝�ャ繝� 18 縺ク縲�
  9. ToString(k) 繧貞他蜃コ縺吶€�
  10. ToString(k-1) 繧貞他蜃コ縺吶€�
  11. 縺薙�繧ェ繝悶ず繧ァ繧ッ繝医′ Result(9) 縺ィ縺�≧蜷榊燕縺ョ繝励Ο繝代ユ繧」繧呈戟縺、縺ェ繧峨�縲� 繧ケ繝�ャ繝� 12 縺ク; 縺薙�繧ェ繝悶ず繧ァ繧ッ繝医′ Result(9) 縺ィ縺�≧蜷榊燕縺ョ繝励Ο繝代ユ繧」繧呈戟縺溘↑縺�↑繧峨�縲� 繧ケ繝�ャ繝� 15 縺ク縲�
  12. 縺薙�繧ェ繝悶ず繧ァ繧ッ繝� 縺ョ [[Get]] 繝。繧ス繝�ラ繧偵€∝シ墓焚 Result(9) 縺ァ蜻シ蜃コ縺吶€�
  13. 縺薙�繧ェ繝悶ず繧ァ繧ッ繝� 縺ョ [[Put]] 繝。繧ス繝�ラ繧偵€∝シ墓焚 Result(10) 縺ィ Result(12) 縺ァ蜻シ蜃コ縺吶€�
  14. 繧ケ繝�ャ繝� 16 縺ク縲�
  15. 縺薙�繧ェ繝悶ず繧ァ繧ッ繝� 縺ョ [[Delete]] 繝。繧ス繝�ラ繧偵€∝シ墓焚 Result(10) 縺ァ蜻シ蜃コ縺吶€�
  16. k 繧� 1 蠅怜�縺吶k縲�
  17. 繧ケ繝�ャ繝� 8 縺ク縲�
  18. 縺薙�繧ェ繝悶ず繧ァ繧ッ繝� 縺ョ [[Delete]] 繝。繧ス繝�ラ繧偵€∝シ墓焚 ToString(Result(2)-1) 縺ァ蜻シ蜃コ縺吶€�
  19. 縺薙�繧ェ繝悶ず繧ァ繧ッ繝� 縺ョ [[Put]] 繝。繧ス繝�ラ繧偵€∝シ墓焚 "length" 縺ィ (Result(2)-1) 縺ァ蜻シ蜃コ縺吶€�
  20. Result(6) 繧定ソ斐☆縲�

NOTE shift 髢「謨ー縺ッ謨�э縺ォ縺ォ豎守畑逧�〒縺ゅk; this 蛟、縺� Array 繧ェ繝悶ず繧ァ繧ッ繝医〒縺ゅk縺薙→繧定ヲ∵アゅ&繧後↑縺�€ゅ◎繧後f縺医€∽サ悶�遞ョ鬘槭�繧ェ繝悶ず繧ァ繧ッ繝医↓繝。繧ス繝�ラ縺ィ縺励※霆「逕ィ蜿ッ閭ス縺ァ縺ゅk縲� shift 髢「謨ー縺� host 繧ェ繝悶ず繧ァ繧ッ繝医↓縺�∪縺城←逕ィ縺ァ縺阪k縺九←縺�°縺ッ縲∝ョ溯」�セ晏ュ倥〒縺ゅk縲�

15.4.4.10 Array.prototype.slice (start, end)

slice 繝。繧ス繝�ラ縺ッ 2 縺、縺ョ蠑墓焚縲� start 縺ィ end 繧偵→繧翫€∬ヲ∫エ� start 縺九i隕∫エ� end 縺ョ蜑阪∪縺ァ (縺セ縺溘�縲� end 縺� undefined 縺ェ繧峨�驟榊�縺ョ譛ォ蟆セ縺セ縺ァ) 縺ョ驟榊�隕∫エ�縺ァ讒区�縺輔l繧矩�蛻励r霑斐☆縲� start 縺瑚イ�縺ェ繧峨�縲� length 繧帝�蛻励�髟キ縺輔→縺励※縲�(length+start) 縺ィ縺励※謇ア繧上l繧九€� end 縺瑚イ�縺ェ繧峨�縲〕ength 繧帝�蛻励�髟キ縺輔→縺励※ (length+end) 縺ィ縺励※謇ア繧上l繧九€� 谺。縺ョ繧ケ繝�ャ繝励′蜿悶i繧後k:

  1. A 繧偵€∝シ� new Array() 縺ィ蜷梧ァ倥↓逕滓�縺励◆驟榊�縺ィ縺吶k縲�
  2. 縺薙�繧ェ繝悶ず繧ァ繧ッ繝� 縺ョ [[Get]] 繝。繧ス繝�ラ繧偵€∝シ墓焚 "length" 縺ァ蜻シ蜃コ縺吶€�
  3. ToUint32(Result(2)) 繧貞他蜃コ縺吶€�
  4. ToInteger(start) 繧貞他蜃コ縺吶€�
  5. Result(4) 縺瑚イ�縺ェ繧峨�縲� max((Result(3)+Result(4)),0) 繧堤畑縺�k; 縺昴≧縺ァ縺ェ縺代l縺ー min(Result(4),Result(3)) 繧堤畑縺�k縲�
  6. k 繧� Result(5) 縺ィ縺吶k縲�
  7. end 縺� undefined 縺ェ繧峨�縲� Result(3) 繧堤畑縺�k; 縺昴≧縺ァ縺ェ縺代l縺ー ToInteger(end) 繧堤畑縺�k縲�
  8. Result(7) 縺瑚イ�縺ェ繧峨�縲� max((Result(3)+Result(7)),0) 繧堤畑縺�k; 縺昴≧縺ァ縺ェ縺代l縺ー min(Result(7),Result(3)) 繧堤畑縺�k縲�
  9. n 繧� 0 縺ィ縺吶k縲�
  10. k 縺� Result(8) 莉・荳翫↑繧峨�縲� 繧ケ繝�ャ繝� 19 縺ク縲�
  11. ToString(k) 繧貞他蜃コ縺吶€�
  12. 縺薙�繧ェ繝悶ず繧ァ繧ッ繝医′ Result(11) 縺ィ縺�≧蜷榊燕縺ョ繝励Ο繝代ユ繧」繧呈戟縺、縺ェ繧峨�縲� 繧ケ繝�ャ繝� 13 縺ク; 縺薙�繧ェ繝悶ず繧ァ繧ッ繝医′ Result(11) 縺ィ縺�≧蜷榊燕縺ョ繝励Ο繝代ユ繧」繧呈戟縺溘↑縺�↑繧峨�縲� 繧ケ繝�ャ繝� 16 縺ク縲�
  13. ToString(n) 繧貞他蜃コ縺吶€�
  14. 縺薙�繧ェ繝悶ず繧ァ繧ッ繝� 縺ョ [[Get]] 繝。繧ス繝�ラ繧偵€∝シ墓焚 Result(11) 縺ァ蜻シ蜃コ縺吶€�
  15. A 縺ョ [[Put]] 繝。繧ス繝�ラ繧偵€∝シ墓焚 Result(13) 縺ィ Result(14) 縺ァ蜻シ蜃コ縺吶€�
  16. k 繧� 1 蠅怜�縺吶k縲�
  17. n 繧� 1 蠅怜�縺吶k縲�
  18. 繧ケ繝�ャ繝� 10 縺ク縲�
  19. A 縺ョ [[Put]] 繝。繧ス繝�ラ繧偵€∝シ墓焚 "length" 縺ィ n 縺ァ蜻シ蜃コ縺吶€�
  20. A 繧定ソ斐☆縲�

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

NOTE slice 髢「謨ー縺ッ謨�э縺ォ縺ォ豎守畑逧�〒縺ゅk; this 蛟、縺� Array 繧ェ繝悶ず繧ァ繧ッ繝医〒縺ゅk縺薙→繧定ヲ∵アゅ&繧後↑縺�€ゅ◎繧後f縺医€∽サ悶�遞ョ鬘槭�繧ェ繝悶ず繧ァ繧ッ繝医↓繝。繧ス繝�ラ縺ィ縺励※霆「逕ィ蜿ッ閭ス縺ァ縺ゅk縲� slice 髢「謨ー縺� host 繧ェ繝悶ず繧ァ繧ッ繝医↓縺�∪縺城←逕ィ縺ァ縺阪k縺九←縺�°縺ッ縲∝ョ溯」�セ晏ュ倥〒縺ゅk縲�

15.4.4.11 Array.prototype.sort (comparefn)

驟榊�隕∫エ�縺ッ繧ス繝シ繝� (荳ヲ縺ケ譖ソ縺�) 縺輔l繧九€ゅた繝シ繝医�蠢�★縺励b螳牙ョ夂噪縺ァ縺ッ縺ェ縺�(縺、縺セ繧翫€∫ュ我セ。縺ィ豈碑シ�&繧後◆隕∫エ�縺悟�縺ョ鬆�〒谿九k縺ィ縺ッ髯舌i縺ェ縺�). comparefn 縺� undefined 縺ァ縺ェ縺�↑繧峨�縲√◎繧後� 2 蛟九�蠑墓焚 x 縺ィ y 繧貞女縺台サ倥¢縲� x < y 縺ェ繧峨�雋�縺ョ蛟、縲� x = y 縺ェ繧峨� 0縲� x > y 縺ェ繧峨�豁」縺ョ蛟、繧定ソ斐☆髢「謨ー縺ァ縺ゅk縺ケ縺阪〒縺ゅk縲�

comparefn 縺� undefined 縺ァ縺ェ縺上€√°縺、 縺薙�驟榊�縺ョ隕∫エ�縺ォ縺、縺�※鬥門ーセ荳€雋ォ縺励◆豈碑シ�未謨ー (荳玖ィ伜盾辣ァ) 縺ァ縺ェ縺��エ蜷医€� 繧ス繝シ繝医�謖ッ繧玖�縺��螳溯」�セ晏ュ倥〒縺ゅk縲� len 繧� ToUint32(this.length) 縺ィ縺吶k縲ゆク玖ィ倥�蜈ィ譚。莉カ繧呈コ€縺溘☆謨エ謨ー i 蜿翫� j 縺ィ 繧ェ繝悶ず繧ァ繧ッ繝� P 縺悟ュ伜惠縺吶k蝣エ蜷医€√た繝シ繝医�謖ッ繧玖�縺��螳溯」�セ晏ュ倥〒縺ゅk:

  • 0 竕ヲ i 竕ヲ len
  • 0 竕ヲ j 竕ヲ len
  • this 縺ッ ToString(i) 縺ィ縺�≧蜷榊燕縺ョ繝励Ο繝代ユ繧」繧呈戟縺溘↑縺�€�
  • P 縺ッ縲� this 縺ァ蟋九∪繧� 1 蛟倶サ・荳翫� [[Prototype]] 繝励Ο繝代ユ繧」繧定セソ繧九%縺ィ縺ォ繧医▲縺ヲ蜿門セ励&繧後k縲�
  • P 縺ッ ToString(j) 縺ィ縺�≧蜷榊燕縺ョ繝励Ο繝代ユ繧」繧呈戟縺、縲�

縺昴≧縺ァ縺ェ縺代l縺ー谺。縺ョ繧ケ繝�ャ繝励′蜿悶i繧後k.

  1. 縺薙�繧ェ繝悶ず繧ァ繧ッ繝� 縺ョ [[Get]] 繝。繧ス繝�ラ繧偵€∝シ墓焚 "length" 縺ァ蜻シ蜃コ縺吶€�
  2. ToUint32(Result(1)) 繧貞他蜃コ縺吶€�
  3. 縺薙�繧ェ繝悶ず繧ァ繧ッ繝医� [[Get]], [[Put]], [[Delete]] 繝。繧ス繝�ラ縺ィ SortCompare (蠕瑚ソー) 縺ョ蜻シ蜃コ縺励r螳溯」�セ晏ュ倥�鬆�コ上〒螳溯。後☆繧九€� [[Get]], [[Put]], [[Delete]] 縺ョ蜷�他蜃コ縺励�隨ャ1蠑墓焚縺ッ 0 莉・荳� Result(2) 譛ェ貅€縺ョ謨エ謨ー縺ィ縺励€� SortCompare 蜻シ蜃コ縺励�蠑墓焚縺ッ蜈郁。後☆繧� [[Get]] 繝。繧ス繝�ラ蜻シ蜃コ縺励�邨先棡縺ィ縺吶k縲�
  4. 縺薙�繧ェ繝悶ず繧ァ繧ッ繝� 繧定ソ斐☆縲�

霑斐&繧後k繧ェ繝悶ず繧ァ繧ッ繝医�縲∵ャ。縺ョ 2 蛟九�繝励Ο繝代ユ繧」繧呈戟縺溘↑縺代l縺ー縺ェ繧峨↑縺�€�

  • 0 莉・荳� Result(2) 譛ェ貅€縺ョ謨エ謨ー j 縺昴l縺槭l縺ォ縺ィ縺」縺ヲ繝励Ο繝代ユ繧」 old[j] 縺悟ュ伜惠縺吶k縺ェ繧峨�縲� new[π(j)] 縺ッ old[j], 縺ィ蜈ィ縺丞酔縺伜€、縺ァ縺ゅj縲√�繝ュ繝代ユ繧」 old[j] 縺悟ュ伜惠縺励↑縺�↑繧峨�縲� new[π(j)] 縺ッ蟄伜惠縺励↑縺�h縺�↑縲�0 莉・荳� Result(2) 譛ェ貅€縺ョ謨エ謨ー縺ョ謨ー蟄ヲ逧���� π 縺悟ュ伜惠縺励↑縺代l縺ー縺ェ繧峨↑縺�€�
  • 0 莉・荳� Result(2) 譛ェ貅€縺ョ蜈ィ縺ヲ縺ョ謨エ謨ー j 縺ィ k 縺昴l縺槭l縺ォ縺、縺�※縲� SortCompare(j, k) < 0 (荳玖ィ� SortCompare 蜿ら�) 縺ェ繧峨�縲� π(j) < π(k) 縺ァ縺ゅk縲�

縺薙%縺ァ縺ッ縲∬。ィ險� old[j] 縺ァ縺薙�髢「謨ー縺ョ螳溯。悟燕縺ョ縺薙�繧ェ繝悶ず繧ァ繧ッ繝医� [[Get]] 繝。繧ス繝�ラ縺ョ蠑墓焚 j 縺ァ縺ョ蜻シ蜃コ縺励�莉ョ縺ョ邨先棡繧貞盾辣ァ縺励€� 陦ィ險� new[j] 縺ァ縺薙�髢「謨ー縺ョ螳溯。悟セ後�縺薙�繧ェ繝悶ず繧ァ繧ッ繝医� [[Get]] 繝。繧ス繝�ラ縺ョ蠑墓焚 j 縺ァ縺ョ蜻シ蜃コ縺励�莉ョ縺ョ邨先棡繧貞盾辣ァ縺吶k縲�

荳玖ィ倥�蠢�ヲ∵擅莉カ縺ョ蜈ィ縺ヲ縺碁寔蜷� S 蜀��蛟、 a, b, c (縺セ縺溘�蜷後§蛟、) 蜈ィ縺ヲ縺ォ縺、縺�※貅€縺溘&繧後k蝣エ蜷医€∝€、縺ョ髮�粋 S 縺ォ縺、縺�※髢「謨ー comparefn 縺ッ鬥門ーセ荳€雋ォ縺励◆豈碑シ�未謨ー縺ァ縺ゅk: 險俶ウ� <CF b 縺ッ comparefn(a,b) < 0 繧呈э蜻ウ縺吶k; a =CF b 縺ッ comparefn(a,b) = 0 (of either sign) 繧呈э蜻ウ縺吶k; a >CF b 縺ッ comparefn(a,b) > 0 繧呈э蜻ウ縺吶k縲�

  • comparefn(a,b) 蜻シ蜃コ縺励�縲� 2 蛟九�蠑墓焚縺ィ縺励※ a 縺ィ b 縺ョ蛟、縺ョ繝壹い繧剃ク弱∴繧峨l繧九→縺榊クク縺ォ蜷後§蛟、 v 繧定ソ斐☆縲� 縺輔i縺ォ縲� v 縺ッ Number 蝙九〒縺ゅj縲� v 縺ッ NaN 縺ァ縺ッ縺ェ縺�€� 荳弱∴繧峨l繧� a 縺ィ b 縺ョ繝壹い縺ォ縺ィ縺」縺ヲ縲∝宍蟇�↓縺ッ a <CF b, a =CF b, a >CF b 縺ョ縺�■荳€縺、縺ッ true 縺ォ縺ェ繧九→縺�≧縺薙→縺ォ豕ィ諢上€�
  • a =CF a (蜀榊クー)
  • a =CF b 縺ェ繧峨�縲� b =CF a (蟇セ遘ー)
  • a =CF b 縺九▽ b =CF c 縺ェ繧峨�縲� a =CF c (=CF 縺ョ莉門虚)
  • a <CF b 縺九▽ b <CF c 縺ェ繧峨�縲� a <CF c (<CF 縺ョ莉門虚)
  • a >CF b 縺九▽ b >CF c 縺ェ繧峨�縲� a >CF c (>CF 縺ョ莉門虚)

NOTE 荳翫�譚。莉カ縺ッ縲� comparefn 縺碁寔蜷� S 繧堤ュ我セ。縺ェ遞ョ蛻・縺ォ蛻�牡縺励€√◎縺ョ遲我セ。縺ェ遞ョ蛻・縺悟�縺乗紛辟カ縺ィ縺励※縺�k縺ョ繧剃ソ晁ィシ縺ォ縺吶k縺ョ縺ォ縲∝ソ�ヲ√°縺、蜊∝�縺ァ縺ゅk縲�

SortCompare 貍皮ョ怜ュ舌′ 2 蛟九�蠑墓焚 j 縺ィ k 縺ァ蜻シ蜃コ縺輔l繧九→縲∵ャ。縺ョ繧ケ繝�ャ繝励′蜿悶i繧後k:

  1. ToString(j) 繧貞他蜃コ縺吶€�
  2. ToString(k) 繧貞他蜃コ縺吶€�
  3. 縺薙�繧ェ繝悶ず繧ァ繧ッ繝医′ Result(1) 縺ィ縺�≧蜷榊燕縺ョ繝励Ο繝代ユ繧」繧呈戟縺溘★縲√°縺、 縺薙�繧ェ繝悶ず繧ァ繧ッ繝医′ Result(2) 縺ィ縺�≧蜷榊燕縺ョ繝励Ο繝代ユ繧」繧呈戟縺溘↑縺�↑繧峨�縲� +0 繧定ソ斐☆縲�
  4. 縺薙�繧ェ繝悶ず繧ァ繧ッ繝医′ Result(1) 縺ィ縺�≧蜷榊燕縺ョ繝励Ο繝代ユ繧」繧呈戟縺溘↑縺�↑繧峨�縲� 1 繧定ソ斐☆縲�
  5. 縺薙�繧ェ繝悶ず繧ァ繧ッ繝医′ Result(2) 縺ィ縺�≧蜷榊燕縺ョ繝励Ο繝代ユ繧」繧呈戟縺溘↑縺�↑繧峨�縲� -1 繧定ソ斐☆縲�
  6. 縺薙�繧ェ繝悶ず繧ァ繧ッ繝� 縺ョ [[Get]] 繝。繧ス繝�ラ繧偵€∝シ墓焚 Result(1) 縺ァ蜻シ蜃コ縺吶€�
  7. 縺薙�繧ェ繝悶ず繧ァ繧ッ繝� 縺ョ [[Get]] 繝。繧ス繝�ラ繧偵€∝シ墓焚 Result(2) 縺ァ蜻シ蜃コ縺吶€�
  8. x 繧� Result(6) 縺ィ縺吶k縲�
  9. y 繧� Result(7) 縺ィ縺吶k縲�
  10. x 縺ィ y 縺御ク。譁ケ undefined 縺ェ繧峨�縲� +0 繧定ソ斐☆縲�
  11. x 縺� undefined 縺ェ繧峨�縲� 1 繧定ソ斐☆縲�
  12. y 縺� undefined 縺ェ繧峨�縲� -1 繧定ソ斐☆縲�
  13. 蠑墓焚 comparefn 縺� undefined 縺ェ繧峨�縲� 繧ケ繝�ャ繝� 16 縺ク縲�
  14. comparefn 繧偵€∝シ墓焚 x 縺ィ y 縺ァ蜻シ蜃コ縺吶€�
  15. Result(14) 繧定ソ斐☆縲�
  16. ToString(x) 繧貞他蜃コ縺吶€�
  17. ToString(y) 繧貞他蜃コ縺吶€�
  18. Result(16) < Result(17) 縺ェ繧峨�縲� -1 繧定ソ斐☆縲�
  19. Result(16) > Result(17) 縺ェ繧峨�縲� 1 繧定ソ斐☆縲�
  20. +0 繧定ソ斐☆縲�

NOTE 蟄伜惠縺励↑縺��繝ュ繝代ユ繧」縺ョ蛟、縺ッ縲∝クク縺ォ undefined 繝励Ο繝代ユ繧」蛟、繧医j螟ァ縺阪¥豈碑シ�@縲� undefined 縺ッ莉悶�蛟、繧医j繧ょ、ァ縺阪>縺ィ豈碑シ�☆繧九◆繧√€� undefined 繝励Ο繝代ユ繧」蛟、縺ッ蟶ク縺ォ邨先棡縺ョ譛ォ蟆セ縺ォ繧ス繝シ繝医@縲∝ュ伜惠縺励↑縺��繝ュ繝代ユ繧」縺ョ蛟、縺檎カ壹¥縲�

NOTE sort 髢「謨ー縺ッ謨�э縺ォ縺ォ豎守畑逧�〒縺ゅk; this 蛟、縺� Array 繧ェ繝悶ず繧ァ繧ッ繝医〒縺ゅk縺薙→繧定ヲ∵アゅ&繧後↑縺�€ゅ◎繧後f縺医€∽サ悶�遞ョ鬘槭�繧ェ繝悶ず繧ァ繧ッ繝医↓繝。繧ス繝�ラ縺ィ縺励※霆「逕ィ蜿ッ閭ス縺ァ縺ゅk縲� sort 髢「謨ー縺� host 繧ェ繝悶ず繧ァ繧ッ繝医↓縺�∪縺城←逕ィ縺ァ縺阪k縺九←縺�°縺ッ縲∝ョ溯」�セ晏ュ倥〒縺ゅk縲�

15.4.4.12 Array.prototype.splice (start, deleteCount [ , item1 [ , item2 [ , ... ] ] ] )

splice 繝。繧ス繝�ラ縺� 2 蛟倶サ・荳翫�蠑墓焚 start, deleteCount, 縺昴@縺ヲ(驕ク謚樒噪縺ォ) item1, item2, etc. 縺ァ蜻シ蜃コ縺輔l繧九→縲��蛻励�豺サ縺亥ュ� start 縺九i蟋九∪繧� deleteCount 蛟九�驟榊�隕∫エ�縺後€∝シ墓焚 item1, item2, etc 縺ァ鄂ョ謠帙&繧後k縲よャ。縺ョ繧ケ繝�ャ繝励′蜿悶i繧後k:

  1. A 繧偵€∝シ� new Array() 縺ィ蜷梧ァ倥↓逕滓�縺励◆驟榊�縺ィ縺吶k縲�
  2. 縺薙�繧ェ繝悶ず繧ァ繧ッ繝� 縺ョ [[Get]] 繝。繧ス繝�ラ繧偵€∝シ墓焚 "length" 縺ァ蜻シ蜃コ縺吶€�
  3. ToUint32(Result(2)) 繧貞他蜃コ縺吶€�
  4. ToInteger(start) 繧貞他蜃コ縺吶€�
  5. Result(4) 縺瑚イ�縺ェ繧峨�縲� max((Result(3)+Result(4)),0) 繧堤畑縺�k; 縺昴≧縺ァ縺ェ縺代l縺ー min(Result(4),Result(3)) 繧堤畑縺�k縲�
  6. min(max(ToInteger(deleteCount),0),Result(3)-Result(5)) 繧堤ョ怜�縺吶k縲�
  7. k 繧� 0 縺ィ縺吶k縲�
  8. k 縺� Result(6) 縺ィ遲我セ。縺ェ繧峨�縲� 繧ケ繝�ャ繝� 16 縺ク縲�
  9. ToString(Result(5)+k) 繧貞他蜃コ縺吶€�
  10. 縺薙�繧ェ繝悶ず繧ァ繧ッ繝医′ Result(9) 縺ィ縺�≧蜷榊燕縺ョ繝励Ο繝代ユ繧」繧呈戟縺、縺ェ繧峨�縲� 繧ケ繝�ャ繝� 11 縺ク; 縺薙�繧ェ繝悶ず繧ァ繧ッ繝医′ Result(9) 縺ィ縺�≧蜷榊燕縺ョ繝励Ο繝代ユ繧」繧呈戟縺溘↑縺�↑繧峨�縲� 繧ケ繝�ャ繝� 14 縺ク縲�
  11. ToString(k) 繧貞他蜃コ縺吶€�
  12. 縺薙�繧ェ繝悶ず繧ァ繧ッ繝� 縺ョ [[Get]] 繝。繧ス繝�ラ繧偵€∝シ墓焚 Result(9) 縺ァ蜻シ蜃コ縺吶€�
  13. A 縺ョ [[Put]] 繝。繧ス繝�ラ繧偵€∝シ墓焚 Result(11) 縺ィ Result(12) 縺ァ蜻シ蜃コ縺吶€�
  14. k 繧� 1 蠅怜�縺輔○繧九€�
  15. 繧ケ繝�ャ繝� 8 縺ク縲�
  16. A 縺ョ [[Put]] 繝。繧ス繝�ラ繧偵€∝シ墓焚 "length" 縺ィ Result(6) 縺ァ蜻シ蜃コ縺吶€�
  17. 霑ス蜉�蠑墓焚 item1, item2, etc 縺ョ謨ー繧堤ョ怜�縺吶k縲�
  18. Result(17) 縺� Result(6) 縺ィ遲峨@縺代l縺ー縲� 繧ケ繝�ャ繝� 48 縺ク縲�
  19. Result(17) 縺� Result(6) 繧医j螟ァ縺阪>縺ェ繧峨�縲� 繧ケ繝�ャ繝� 37 縺ク縲�
  20. k 繧� Result(5) 縺ィ縺吶k縲�
  21. k 縺� (Result(3)-Result(6)) 縺ィ遲峨@縺代l縺ー縲� 繧ケ繝�ャ繝� 31 縺ク縲�
  22. ToString(k+Result(6)) 繧貞他蜃コ縺吶€�
  23. ToString(k+Result(17)) 繧貞他蜃コ縺吶€�
  24. 縺薙�繧ェ繝悶ず繧ァ繧ッ繝医′ Result(22) 縺ィ縺�≧蜷榊燕縺ョ繝励Ο繝代ユ繧」繧呈戟縺、縺ェ繧峨�縲� 繧ケ繝�ャ繝� 25 縺ク; 縺薙�繧ェ繝悶ず繧ァ繧ッ繝医′ Result(22) 縺ィ縺�≧蜷榊燕縺ョ繝励Ο繝代ユ繧」繧呈戟縺溘↑縺�↑繧峨�縲� 繧ケ繝�ャ繝� 28 縺ク縲�
  25. 縺薙�繧ェ繝悶ず繧ァ繧ッ繝� 縺ョ [[Get]] 繝。繧ス繝�ラ繧偵€∝シ墓焚 Result(22) 縺ァ蜻シ蜃コ縺吶€�
  26. 縺薙�繧ェ繝悶ず繧ァ繧ッ繝� 縺ョ [[Put]] 繝。繧ス繝�ラ繧偵€∝シ墓焚 Result(23) 縺ィ Result(25) 縺ァ蜻シ蜃コ縺吶€�
  27. 繧ケ繝�ャ繝� 29 縺ク縲�
  28. 縺薙�繧ェ繝悶ず繧ァ繧ッ繝� 縺ョ [[Delete]] 繝。繧ス繝�ラ繧偵€∝シ墓焚 Result(23) 縺ァ蜻シ蜃コ縺吶€�
  29. k 繧� 1 蠅怜�縺吶k縲�
  30. 繧ケ繝�ャ繝� 21 縺ク縲�
  31. k 繧� Result(3) 縺ィ縺吶k縲�
  32. k 縺� (Result(3)-Result(6)+Result(17)) 縺ィ遲峨@縺代l縺ー縲� 繧ケ繝�ャ繝� 48 縺ク縲�
  33. ToString(k-1) 繧貞他蜃コ縺吶€�
  34. 縺薙�繧ェ繝悶ず繧ァ繧ッ繝� 縺ョ [[Delete]] 繝。繧ス繝�ラ繧偵€∝シ墓焚 Result(33) 縺ァ蜻シ蜃コ縺吶€�
  35. k 繧� 1 貂帛�縺吶k縲�
  36. 繧ケ繝�ャ繝� 32 縺ク縲�
  37. k 繧� (Result(3)-Result(6)) 縺ィ縺吶k縲�
  38. k 縺� Result(5) 縺ィ遲峨@縺代l縺ー縲� 繧ケ繝�ャ繝� 48 縺ク縲�
  39. ToString(k+Result(6)-1) 繧貞他蜃コ縺吶€�
  40. ToString(k+Result(17)-1) 繧貞他蜃コ縺吶€�
  41. 縺薙�繧ェ繝悶ず繧ァ繧ッ繝医′ Result(39) 縺ィ縺�≧蜷榊燕縺ョ繝励Ο繝代ユ繧」繧呈戟縺、縺ェ繧峨�縲� 繧ケ繝�ャ繝� 42 縺ク; 縺薙�繧ェ繝悶ず繧ァ繧ッ繝医′ Result(39) 縺ィ縺�≧蜷榊燕縺ョ繝励Ο繝代ユ繧」繧呈戟縺溘↑縺�↑繧峨�縲� 繧ケ繝�ャ繝� 45 縺ク縲�
  42. 縺薙�繧ェ繝悶ず繧ァ繧ッ繝� 縺ョ [[Get]] 繝。繧ス繝�ラ繧偵€∝シ墓焚 Result(39) 縺ァ蜻シ蜃コ縺吶€�
  43. 縺薙�繧ェ繝悶ず繧ァ繧ッ繝� 縺ョ [[Put]] 繝。繧ス繝�ラ繧偵€∝シ墓焚 Result(40) 縺ィ Result(42) 縺ァ蜻シ蜃コ縺吶€�
  44. 繧ケ繝�ャ繝� 46 縺ク縲�
  45. 縺薙�繧ェ繝悶ず繧ァ繧ッ繝� 縺ョ [[Delete]] 繝。繧ス繝�ラ繧偵€∝シ墓焚 Result(40) 縺ァ蜻シ蜃コ縺吶€�
  46. k 繧� 1 貂帛�縺吶k縲�
  47. 繧ケ繝�ャ繝� 38 縺ク縲�
  48. k 繧� Result(5) 縺ィ縺吶k縲�
  49. item1 縺九i蟋九∪繧句シ墓焚繝ェ繧ケ繝医�荳€驛ィ縺九i縲∵ャ。縺ョ蠑墓焚繧貞叙蠕励☆繧�; 縺薙l莉・荳雁シ墓焚縺後↑縺�↑繧峨�縲� 繧ケ繝�ャ繝� 53 縺ク縲�
  50. 縺薙�繧ェ繝悶ず繧ァ繧ッ繝� 縺ョ [[Put]] 繝。繧ス繝�ラ繧偵€∝シ墓焚 ToString(k) 縺ィ Result(49) 縺ァ蜻シ蜃コ縺吶€�
  51. k 繧� 1 蠅怜�縺吶k縲�
  52. 繧ケ繝�ャ繝� 49 縺ク縲�
  53. 縺薙�繧ェ繝悶ず繧ァ繧ッ繝� 縺ョ [[Put]] 繝。繧ス繝�ラ繧偵€∝シ墓焚 "length" 縺ィ (Result(3)-Result(6)+Result(17)) 縺ァ蜻シ蜃コ縺吶€�
  54. A 繧定ソ斐☆縲�

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

NOTE splice 髢「謨ー縺ッ謨�э縺ォ縺ォ豎守畑逧�〒縺ゅk; this 蛟、縺� Array 繧ェ繝悶ず繧ァ繧ッ繝医〒縺ゅk縺薙→繧定ヲ∵アゅ&繧後↑縺�€ゅ◎繧後f縺医€∽サ悶�遞ョ鬘槭�繧ェ繝悶ず繧ァ繧ッ繝医↓繝。繧ス繝�ラ縺ィ縺励※霆「逕ィ蜿ッ閭ス縺ァ縺ゅk縲� splice 髢「謨ー縺� host 繧ェ繝悶ず繧ァ繧ッ繝医↓縺�∪縺城←逕ィ縺ァ縺阪k縺九←縺�°縺ッ縲∝ョ溯」�セ晏ュ倥〒縺ゅk縲�

15.4.4.13 Array.prototype.unshift ( [ item1 [ , item2 [ , ... ] ] ] )

驟榊�蜀��鬆�園縺悟シ墓焚繝ェ繧ケ繝亥�縺ォ蜃コ迴セ鬆�→蜷後§縺ォ縺ェ繧九h縺�↓縲∝シ墓焚縺碁�蛻励�蜈磯�ュ縺ォ prepend 縺輔l繧九€�

unshift 繝。繧ス繝�ラ縺� 0 蛟倶サ・荳翫�蠑墓焚 item1, item2, etc. 縺ァ蜻シ蜃コ縺輔l繧九→縲∵ャ。縺ョ繧ケ繝�ャ繝励′蜿悶i繧後k:

  1. 縺薙�繧ェ繝悶ず繧ァ繧ッ繝� 縺ョ [[Get]] 繝。繧ス繝�ラ繧偵€∝シ墓焚 "length" 縺ァ蜻シ蜃コ縺吶€�
  2. ToUint32(Result(1)) 繧貞他蜃コ縺吶€�
  3. 蠑墓焚縺ョ謨ー繧堤ョ怜�縺吶k縲�
  4. k 繧� Result(2) 縺ィ縺吶k縲�
  5. k 縺� 0 縺ェ繧峨�縲� 繧ケ繝�ャ繝� 15 縺ク縲�
  6. ToString(k-1) 繧貞他蜃コ縺吶€�
  7. ToString(k+Result(3)-1) 繧貞他蜃コ縺吶€�
  8. 縺薙�繧ェ繝悶ず繧ァ繧ッ繝医′ Result(6) 縺ィ縺�≧蜷榊燕縺ョ繝励Ο繝代ユ繧」繧呈戟縺、縺ェ繧峨�縲� 繧ケ繝�ャ繝� 9 縺ク; 縺薙�繧ェ繝悶ず繧ァ繧ッ繝医′ Result(6) 縺ィ縺�≧蜷榊燕縺ョ繝励Ο繝代ユ繧」繧呈戟縺溘↑縺�↑繧峨�縲� 繧ケ繝�ャ繝� 12 縺ク縲�
  9. 縺薙�繧ェ繝悶ず繧ァ繧ッ繝� 縺ョ [[Get]] 繝。繧ス繝�ラ繧偵€∝シ墓焚 Result(6) 縺ァ蜻シ蜃コ縺吶€�
  10. 縺薙�繧ェ繝悶ず繧ァ繧ッ繝� 縺ョ [[Put]] 繝。繧ス繝�ラ繧偵€∝シ墓焚 Result(7) 縺ィ Result(9) 縺ァ蜻シ蜃コ縺吶€�
  11. 繧ケ繝�ャ繝� 13 縺ク縲�
  12. 縺薙�繧ェ繝悶ず繧ァ繧ッ繝� 縺ョ [[Delete]] 繝。繧ス繝�ラ繧偵€∝シ墓焚 Result(7) 縺ァ蜻シ蜃コ縺吶€�
  13. k 繧� 1 貂帛�縺吶k縲�
  14. 繧ケ繝�ャ繝� 5 縺ク縲�
  15. k 繧� 0 縺ィ縺吶k縲�
  16. item1 縺ァ蟋九∪繧句シ墓焚繝ェ繧ケ繝医�荳€驛ィ縺九i縲∵ャ。縺ョ蠑墓焚繧貞叙蠕励☆繧�; 縺薙l莉・荳雁シ墓焚縺後↑縺�↑繧峨�縲� 繧ケ繝�ャ繝� 21 縺ク縲�
  17. ToString(k) 繧貞他蜃コ縺吶€�
  18. 縺薙�繧ェ繝悶ず繧ァ繧ッ繝� 縺ョ [[Put]] 繝。繧ス繝�ラ繧偵€∝シ墓焚 Result(17) 縺ィ Result(16) 縺ァ蜻シ蜃コ縺吶€�
  19. k 繧� 1 蠅怜�縺吶k縲�
  20. 繧ケ繝�ャ繝� 16 縺ク縲�
  21. 縺薙�繧ェ繝悶ず繧ァ繧ッ繝� 縺ョ [[Put]] 繝。繧ス繝�ラ繧偵€∝シ墓焚 "length" 縺ィ (Result(2)+Result(3)) 縺ァ蜻シ蜃コ縺吶€�
  22. (Result(2)+Result(3)) 繧定ソ斐☆縲�

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

NOTE unshift 髢「謨ー縺ッ謨�э縺ォ縺ォ豎守畑逧�〒縺ゅk; this 蛟、縺� Array 繧ェ繝悶ず繧ァ繧ッ繝医〒縺ゅk縺薙→繧定ヲ∵アゅ&繧後↑縺�€ゅ◎繧後f縺医€∽サ悶�遞ョ鬘槭�繧ェ繝悶ず繧ァ繧ッ繝医↓繝。繧ス繝�ラ縺ィ縺励※霆「逕ィ蜿ッ閭ス縺ァ縺ゅk縲� unshift 髢「謨ー縺� host 繧ェ繝悶ず繧ァ繧ッ繝医↓縺�∪縺城←逕ィ縺ァ縺阪k縺九←縺�°縺ッ縲∝ョ溯」�セ晏ュ倥〒縺ゅk縲�

15.4.5 Array 繧、繝ウ繧ケ繧ソ繝ウ繧ケ縺ョ繝励Ο繝代ユ繧」 (Properties of Array Instances)

Array 繧、繝ウ繧ケ繧ソ繝ウ繧ケ縺ッ縲� Array 繝励Ο繝医ち繧、繝励が繝悶ず繧ァ繧ッ繝医°繧峨�繝ュ繝代ユ繧」繧堤カ呎価縺励€√◎縺励※谺。縺ョ繝励Ο繝代ユ繧」繧よ戟縺、縲�

15.4.5.1 [[Put]] (P, V)

Array 繧ェ繝悶ず繧ァ繧ッ繝医�螟牙喧縺励◆ [[Put]] 繝。繧ス繝�ラ繧堤畑縺�※莉悶� Native ECMAScript 繧ェ繝悶ず繧ァ繧ッ繝医�縺溘a縺ォ菴ソ逕ィ縺輔l繧九€�

A 繧� Array 繧ェ繝悶ず繧ァ繧ッ繝医€� P 繧呈枚蟄怜�縺ィ諠ウ螳壹☆繧九€�

A 縺ョ [[Put]] 繝。繧ス繝�ラ縺後€√�繝ュ繝代ユ繧」 P 縺ィ蛟、 V 縺ァ蜻シ蜃コ縺輔l繧九→縺阪€∵ャ。縺ョ繧ケ繝�ャ繝励′蜿悶i繧後k:

  1. A 縺ョ [[CanPut]] method 繧貞錐蜑� P 縺ァ蜻シ蜃コ縺吶€�
  2. Result(1) 縺� false 縺ェ繧峨�縲∵綾繧九€�
  3. A 蜷榊燕 P 縺ョ繝励Ο繝代ユ繧」繧呈戟縺溘↑縺�↑繧峨�縲√せ繝�ャ繝� 7 縺ク縲�
  4. P 縺� "length" 縺ェ繧峨�縲√せ繝�ャ繝� 12 縺ク縲�
  5. A 縺ョ繝励Ο繝代ユ繧」 P 繧� V 縺ォ險ュ螳壹☆繧九€�
  6. 繧ケ繝�ャ繝� 8 繝倥€�
  7. 蜷榊燕 P 縺ョ繝励Ο繝代ユ繧」繧堤函謌舌@縲∝€、繧� V 縺ォ險ュ螳壹@遨コ縺ョ螻樊€ァ繧剃ク弱∴繧九€�
  8. P 縺碁�蛻励�豺サ縺亥ュ励〒縺ェ縺代l縺ー縲∵綾繧九€�
  9. ToUint32(P) 縺� A 縺ョ length 繝励Ο繝代ユ繧」譛ェ貅€縺ェ繧峨�縲∵綾繧九€�
  10. A 縺ョ length 繝励Ο繝代ユ繧」繧� ToUint32(P)+1 縺ォ螟画峩 (縺セ縺溘�險ュ螳�) 縺吶k縲�
  11. 謌サ繧九€�
  12. ToUint32(V) 繧堤ョ怜�縺吶k縲�
  13. Result(12) 縺� ToNumber(V) 縺ィ遲峨@縺上↑縺代l縺ー縲∽セ句、� RangeError 繧呈兜縺偵k縲�
  14. A 縺ョ length 繝励Ο繝代ユ繧」 縺ョ蛟、譛ェ貅€縺ァ縺ゅj Result(12) 譛ェ貅€縺ァ縺ェ縺�推謨エ謨ー k 縺ォ縺、縺�※縲� A 閾ェ霄ォ縺� ToString(k) 縺ィ縺�≧蜷榊燕縺ョ (邯呎価縺励◆繝励Ο繝代ユ繧」縺ァ縺ッ縺ェ縺�) 繝励Ο繝代ユ繧」繧呈戟縺、縺ェ繧峨�縲√◎縺ョ繝励Ο繝代ユ繧」繧貞炎髯、縺吶k縲�
  15. A 縺ョ繝励Ο繝代ユ繧」 P 縺ョ蛟、繧� Result(12) 縺ォ險ュ螳壹☆繧九€�
  16. 謌サ繧九€�

15.4.5.2 length

Array 繧ェ繝悶ず繧ァ繧ッ繝医� length 繝励Ο繝代ユ繧」縺ッ縲��蛻励�豺サ縺亥ュ励r蜷榊燕縺ィ縺吶k蜷��繝ュ繝代ユ繧」縺ョ蜷榊燕繧医j縲∝クク縺ォ謨ー蛟、逧�↓螟ァ縺阪>縲�

length 繝励Ο繝代ユ繧」縺ッ螻樊€ァ { DontEnum, DontDelete } 繧呈戟縺、縲�

Page Contents

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