回答編集履歴
2
誤表記の修正
test
CHANGED
@@ -30,7 +30,7 @@
|
|
30
30
|
|
31
31
|
`.push()`メソッドでは配列風のオブジェクトに対して要素を追加することができるので、Object等を`this`に指定しても概ね動作するのですが、基本的にはArrayオブジェクトの為のメソッドであり、Arrayオブジェクトが持つ配列長を格納する`length`プロパティに対して値を増分する処理を行います。プロパティがなければ作成されます。
|
32
32
|
|
33
|
-
もう少し補足しますと、`.push()`メソッドの実行時、まず`length`プロパティを参照し、その値
|
33
|
+
もう少し補足しますと、`.push()`メソッドの実行時、まず`length`プロパティを参照し、その値をキーとして要素を追加します。`length`プロパティがない場合のキーは `0`です。その為以下のような動きになります。
|
34
34
|
|
35
35
|
|
36
36
|
|
1
.push()メソッドの説明を補足
test
CHANGED
@@ -30,6 +30,30 @@
|
|
30
30
|
|
31
31
|
`.push()`メソッドでは配列風のオブジェクトに対して要素を追加することができるので、Object等を`this`に指定しても概ね動作するのですが、基本的にはArrayオブジェクトの為のメソッドであり、Arrayオブジェクトが持つ配列長を格納する`length`プロパティに対して値を増分する処理を行います。プロパティがなければ作成されます。
|
32
32
|
|
33
|
+
もう少し補足しますと、`.push()`メソッドの実行時、まず`length`プロパティを参照し、その値に `+1` した値をキーとして要素を追加します。`length`プロパティがない場合のキーは `0`です。その為以下のような動きになります。
|
34
|
+
|
35
|
+
|
36
|
+
|
37
|
+
``` javascript
|
38
|
+
|
39
|
+
obj = {
|
40
|
+
|
41
|
+
0: 'foo',
|
42
|
+
|
43
|
+
length: 1
|
44
|
+
|
45
|
+
}
|
46
|
+
|
47
|
+
|
48
|
+
|
49
|
+
Array.prototype.push.call(obj, 'bar');
|
50
|
+
|
51
|
+
|
52
|
+
|
53
|
+
console.log(obj); // {0: "foo", 1: "bar", length: 2}
|
54
|
+
|
55
|
+
```
|
56
|
+
|
33
57
|
|
34
58
|
|
35
59
|
個人的にはArrayオブジェクト以外で `Array.prototype.push()` は使わない方が良いと思います。
|