回答編集履歴
2
追記しました。
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.
|
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
誤りの修正
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
|
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
|
|