質問するログイン新規登録

回答編集履歴

2

文字列について追記

2016/12/14 04:38

投稿

Lhankor_Mhy
Lhankor_Mhy

スコア37595

answer CHANGED
@@ -40,4 +40,5 @@
40
40
  fakeArray.add(2);
41
41
  fakeArray.length; // 2
42
42
  ```
43
- こんな感じで、「プロパティを変化させるメソッドが存在する」と思えば、納得がいくのではないでしょうか。
43
+ こんな感じで、「プロパティを変化させるメソッドが存在する」と思えば、納得がいくのではないでしょうか。
44
+ ついでに言えば、文字列の場合、イミュータブルなオブジェクトだと思うので、lengthプロパティが変更されることはないでしょう。

1

yambejpさんへのコメントを受けて追記

2016/12/14 04:37

投稿

Lhankor_Mhy
Lhankor_Mhy

スコア37595

answer CHANGED
@@ -18,4 +18,26 @@
18
18
 
19
19
  ##### 2
20
20
  もうお分かりかと思いますが、メソッドは呼び出しができる関数オブジェクトとして定義されていますので、引数がなくても関数呼び出しの書式を省略することはできません。
21
- 一方でプロパティは、文字列などの呼び出しができないオブジェクトとして定義されていますので、逆に呼び出しをするとエラーになります。
21
+ 一方でプロパティは、文字列などの呼び出しができないオブジェクトとして定義されていますので、逆に呼び出しをするとエラーになります。
22
+
23
+ ##### yambejpさんへのコメントを受けて追記
24
+ > その文字列の長さを返すという行為は決まった属性を返すのではなく、変数に応じて処理をしてくれるため感覚的にはとてもメソッドに近いイメージ
25
+ ```javascript
26
+ var fakeArray = {
27
+ length : 0,
28
+ arr : '',
29
+ new : function(x){
30
+ this.arr = String(x);
31
+ this.length = 1;
32
+ },
33
+ add : function(x){
34
+ this.arr += ',' + String(x);
35
+ this.length += 1;
36
+ }
37
+ }
38
+ fakeArray.new(1);
39
+ fakeArray.length; // 1
40
+ fakeArray.add(2);
41
+ fakeArray.length; // 2
42
+ ```
43
+ こんな感じで、「プロパティを変化させるメソッドが存在する」と思えば、納得がいくのではないでしょうか。