回答編集履歴
2
文字列について追記
test
CHANGED
@@ -83,3 +83,5 @@
|
|
83
83
|
```
|
84
84
|
|
85
85
|
こんな感じで、「プロパティを変化させるメソッドが存在する」と思えば、納得がいくのではないでしょうか。
|
86
|
+
|
87
|
+
ついでに言えば、文字列の場合、イミュータブルなオブジェクトだと思うので、lengthプロパティが変更されることはないでしょう。
|
1
yambejpさんへのコメントを受けて追記
test
CHANGED
@@ -39,3 +39,47 @@
|
|
39
39
|
もうお分かりかと思いますが、メソッドは呼び出しができる関数オブジェクトとして定義されていますので、引数がなくても関数呼び出しの書式を省略することはできません。
|
40
40
|
|
41
41
|
一方でプロパティは、文字列などの呼び出しができないオブジェクトとして定義されていますので、逆に呼び出しをするとエラーになります。
|
42
|
+
|
43
|
+
|
44
|
+
|
45
|
+
##### yambejpさんへのコメントを受けて追記
|
46
|
+
|
47
|
+
> その文字列の長さを返すという行為は決まった属性を返すのではなく、変数に応じて処理をしてくれるため感覚的にはとてもメソッドに近いイメージ
|
48
|
+
|
49
|
+
```javascript
|
50
|
+
|
51
|
+
var fakeArray = {
|
52
|
+
|
53
|
+
length : 0,
|
54
|
+
|
55
|
+
arr : '',
|
56
|
+
|
57
|
+
new : function(x){
|
58
|
+
|
59
|
+
this.arr = String(x);
|
60
|
+
|
61
|
+
this.length = 1;
|
62
|
+
|
63
|
+
},
|
64
|
+
|
65
|
+
add : function(x){
|
66
|
+
|
67
|
+
this.arr += ',' + String(x);
|
68
|
+
|
69
|
+
this.length += 1;
|
70
|
+
|
71
|
+
}
|
72
|
+
|
73
|
+
}
|
74
|
+
|
75
|
+
fakeArray.new(1);
|
76
|
+
|
77
|
+
fakeArray.length; // 1
|
78
|
+
|
79
|
+
fakeArray.add(2);
|
80
|
+
|
81
|
+
fakeArray.length; // 2
|
82
|
+
|
83
|
+
```
|
84
|
+
|
85
|
+
こんな感じで、「プロパティを変化させるメソッドが存在する」と思えば、納得がいくのではないでしょうか。
|