回答編集履歴

2

追記しました。

2016/12/05 10:51

投稿

miyabi-sun
miyabi-sun

スコア21158

test CHANGED
@@ -12,9 +12,9 @@
12
12
 
13
13
  // hogeは[1, 2, 3]の配列なので、当然lengthなどというプロパティは存在しない
14
14
 
15
- // そうだ、Arrayオブジェクト本体のプロパティを探そう!
15
+ // そうだ、Arrayオブジェクトのインスタンスのプロパティを探そう!
16
16
 
17
- // Array.prototype.lengthってのはあるかな?あったあった、このプロパティ使おう
17
+ // Array.lengthってのはあるかな?あったあった、このプロパティ使おう
18
18
 
19
19
  ```
20
20
 
@@ -65,3 +65,39 @@
65
65
  配列が基本的に所持している`length`、`map`、`forEach`などのプロパティやメソッドは、
66
66
 
67
67
  上記のような必殺技で覚え込ませたものと覚えれば理解しやすいかと思います。
68
+
69
+
70
+
71
+ ---
72
+
73
+
74
+
75
+ 追記:lengthプロパティは誰がどうやって追加してるのか?
76
+
77
+
78
+
79
+ これはブラウザ毎の実装です。
80
+
81
+
82
+
83
+ えっ、それじゃブラウザによってあったりなかったりするの?
84
+
85
+ …という状態を危惧したW3Cという団体が、[ECMAScript](https://www.ecma-international.org/ecma-262/5.1/)という規格を勧告しています。
86
+
87
+ IEやChromeやFirefoxなどのブラウザはほぼ全てJavaScriptのエンジンを作る際にこの規格に従って作られています。
88
+
89
+ 例えばIE9はECMAScript5に準拠していますので、これらの定義は全て盛り込まれているはずです。
90
+
91
+
92
+
93
+ Arrayのプロトタイプのプロパティやメソッド郡は[ECMAScript5.1の15.4.4](https://www.ecma-international.org/ecma-262/5.1/#sec-15.4.4)や[同15.4.5](https://www.ecma-international.org/ecma-262/5.1/#sec-15.4.5)あたりで紹介されています
94
+
95
+ Array.lengthはインスタンスプロパティとして紹介されていました。→修正しました。
96
+
97
+
98
+
99
+ この英文の塊全部読めはあんまりなので、
100
+
101
+ [MDN](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Array)を読むと理解し易いかと思います。
102
+
103
+ (英語が得意であれば是非目を通して下さい)

1

誤りの修正

2016/12/05 10:51

投稿

miyabi-sun
miyabi-sun

スコア21158

test CHANGED
@@ -54,9 +54,9 @@
54
54
 
55
55
  console.log(hoge.add(10)); // 13
56
56
 
57
- console.log(3.add(10)); // Uncaught TypeError: hoge.add is not a function(…) ←数値型は直接は無理
57
+ console.log(3.add(10)); // Uncaught SyntaxError: Invalid or unexpected token ←数値型にドットを付けると小数点以下と推測されるのでSyntaxError
58
58
 
59
- console.log((3).add(10)); // 13 ←カッコで包めばOK
59
+ console.log((3).add(10)); // 13 ←なのでカッコで包めばOK
60
60
 
61
61
  ```
62
62