回答編集履歴

12

  

2022/07/03 07:42

投稿

退会済みユーザー
test CHANGED
@@ -45,7 +45,7 @@
45
45
  for(let i=youngest; i<=oldest; i++) {
46
46
  this.ageRange.push(i);
47
47
  }
48
- return this; // メソッドチェーンを使いたいので this を返すらしい・・・
48
+ return this; // 要件:メソッドチェーンを使いたいので this を返す
49
49
  }
50
50
 
51
51
  // getAgeRange メソッドの実装

11

 

2022/07/03 07:39

投稿

退会済みユーザー
test CHANGED
@@ -1,3 +1,7 @@
1
+ ※前提として、「(nearly_years_old メソッドに於いて)メソッドチェーンをあえて使用したいがために、nearly_years_old は this を返す(return this している)」ものとします。
2
+ nearly_years_old が this以外の戻り値を返すパターンの可能性については、ここでは論じません。
3
+
4
+ ---
1
5
 
2
6
  console.log() のlog メソッドの引数に何かを指定した場合に、引数に指定されたモノの toString メソッドが呼ばれるかどうかは[処理系の実装に依存している](https://stackoverflow.com/questions/36215379/does-console-log-invokes-tostring-method-of-an-object)ようです。
3
7
  少なくとも、Windows の Chromium Edgeでは、log メソッドの引数に 独自のObject を指定した場合、その Object に toStringメソッドが実装されていても、自動的にそのtoStringメソッドが呼ばれるわけではないようです。

10

 

2022/07/03 07:29

投稿

退会済みユーザー
test CHANGED
@@ -1,6 +1,5 @@
1
1
 
2
- console.log() のlog メソッドの引数に何かを指定した場合に、引数に指定されたモノの toString メソッドが呼ばれるかどうかは[ブラウザの実装依存のようです](https://stackoverflow.com/questions/36215379/does-console-log-invokes-tostring-method-of-an-object)。
2
+ console.log() のlog メソッドの引数に何かを指定した場合に、引数に指定されたモノの toString メソッドが呼ばれるかどうかは[処理系の実装依存している](https://stackoverflow.com/questions/36215379/does-console-log-invokes-tostring-method-of-an-object)ようです
3
-
4
3
  少なくとも、Windows の Chromium Edgeでは、log メソッドの引数に 独自のObject を指定した場合、その Object に toStringメソッドが実装されていても、自動的にそのtoStringメソッドが呼ばれるわけではないようです。
5
4
  たとえば、質問にある Person クラスに、「年齢の配列を返す toString メソッド」が実装されていても、
6
5
  ```js

9

 

2022/07/03 07:26

投稿

退会済みユーザー
test CHANGED
@@ -33,25 +33,25 @@
33
33
  constructor(name, age) {
34
34
  this.name = name;
35
35
  this.age = age;
36
- this.agerange = [];
36
+ this.ageRange = [];
37
37
  }
38
38
 
39
39
  nearly_years_old() {
40
40
  const youngest = this.age - 5;
41
41
  const oldest = this.age + 5;
42
42
  for(let i=youngest; i<=oldest; i++) {
43
- this.agerange.push(i);
43
+ this.ageRange.push(i);
44
44
  }
45
45
  return this; // メソッドチェーンを使いたいので this を返すらしい・・・
46
46
  }
47
47
 
48
48
  // getAgeRange メソッドの実装
49
49
  getAgeRange() {
50
- return this.agerange
50
+ return this.ageRange
51
51
  }
52
52
  }
53
53
  ```
54
- というように、年齢の配列(agerange) を返すメソッド(上の例ではgetAgeRange()メソッド)を実装しておき、
54
+ というように、年齢の配列(ageRange) を返すメソッド(上の例ではgetAgeRange()メソッド)を実装しておき、
55
55
  呼び出すほうで、
56
56
  ```js
57
57
  person = new Person('John', 30);
@@ -62,7 +62,7 @@
62
62
 
63
63
  ```
64
64
 
65
- console.log(person.agerange);
65
+ console.log(person.ageRange);
66
66
  ```
67
67
  とすればよいのではないでしょうか。
68
68
 

8

 

2022/07/03 07:22

投稿

退会済みユーザー
test CHANGED
@@ -42,7 +42,7 @@
42
42
  for(let i=youngest; i<=oldest; i++) {
43
43
  this.agerange.push(i);
44
44
  }
45
- return this;
45
+ return this; // メソッドチェーンを使いたいので this を返すらしい・・・
46
46
  }
47
47
 
48
48
  // getAgeRange メソッドの実装

7

 

2022/07/03 07:21

投稿

退会済みユーザー
test CHANGED
@@ -3,12 +3,12 @@
3
3
 
4
4
  少なくとも、Windows の Chromium Edgeでは、log メソッドの引数に 独自のObject を指定した場合、その Object に toStringメソッドが実装されていても、自動的にそのtoStringメソッドが呼ばれるわけではないようです。
5
5
  たとえば、質問にある Person クラスに、「年齢の配列を返す toString メソッド」が実装されていても、
6
- ```
6
+ ```js
7
7
  person = new Person('John', 30);
8
8
  person.nearly_years_old();
9
9
  console.log(person);
10
10
  ```
11
- の3目の
11
+ の3目の
12
12
  ```js
13
13
  console.log(person);
14
14
  ```

6

 

2022/07/03 07:21

投稿

退会済みユーザー
test CHANGED
@@ -2,8 +2,13 @@
2
2
  console.log() のlog メソッドの引数に何かを指定した場合に、引数に指定されたモノの toString メソッドが呼ばれるかどうかは[ブラウザの実装依存のようです](https://stackoverflow.com/questions/36215379/does-console-log-invokes-tostring-method-of-an-object)。
3
3
 
4
4
  少なくとも、Windows の Chromium Edgeでは、log メソッドの引数に 独自のObject を指定した場合、その Object に toStringメソッドが実装されていても、自動的にそのtoStringメソッドが呼ばれるわけではないようです。
5
-
6
- つまり、質問にある Person クラスに、「年齢の配列を返す toString メソッド」が実装されていても、
5
+ たとえば、質問にある Person クラスに、「年齢の配列を返す toString メソッド」が実装されていても、
6
+ ```
7
+ person = new Person('John', 30);
8
+ person.nearly_years_old();
9
+ console.log(person);
10
+ ```
11
+ の3番目の
7
12
  ```js
8
13
  console.log(person);
9
14
  ```

5

 

2022/07/03 07:20

投稿

退会済みユーザー
test CHANGED
@@ -7,7 +7,7 @@
7
7
  ```js
8
8
  console.log(person);
9
9
  ```
10
- という記法で 年齢の配列だけを表示させることはできません。(実装によりますが、そのクラスに実装されプロパティが全部表示されるようです)
10
+ という記法で 年齢の配列だけを表示させることはできません。(実装によるようですが、そのクラスに実装されているプロパティが全部表示されるようです)
11
11
 
12
12
  また、
13
13
  ```js

4

 

2022/07/03 07:18

投稿

退会済みユーザー
test CHANGED
@@ -3,11 +3,11 @@
3
3
 
4
4
  少なくとも、Windows の Chromium Edgeでは、log メソッドの引数に 独自のObject を指定した場合、その Object に toStringメソッドが実装されていても、自動的にそのtoStringメソッドが呼ばれるわけではないようです。
5
5
 
6
- つまり、質問にある Person クラスに、「agerange を返す toString メソッド」が実装されていても、
6
+ つまり、質問にある Person クラスに、「年齢の配列を返す toString メソッド」が実装されていても、
7
7
  ```js
8
8
  console.log(person);
9
9
  ```
10
- という記法で agerange だけを表示させることはできません。
10
+ という記法で 年齢の配列だけを表示させることはできません。(実装によりますが、そのクラスに実装されたプロパティが全部表示されるようです)
11
11
 
12
12
  また、
13
13
  ```js

3

 

2022/07/03 07:17

投稿

退会済みユーザー
test CHANGED
@@ -1,7 +1,7 @@
1
1
 
2
2
  console.log() のlog メソッドの引数に何かを指定した場合に、引数に指定されたモノの toString メソッドが呼ばれるかどうかは[ブラウザの実装依存のようです](https://stackoverflow.com/questions/36215379/does-console-log-invokes-tostring-method-of-an-object)。
3
3
 
4
- 少なくとも、Windows の Chromium Edgeでは、log メソッドに 独自のObject を指定した場合、その Object に toStringメソッドが実装されていても、自動的にそのメソッドが呼ばれるわけではないようです。
4
+ 少なくとも、Windows の Chromium Edgeでは、log メソッドの引数に 独自のObject を指定した場合、その Object に toStringメソッドが実装されていても、自動的にそのtoStringメソッドが呼ばれるわけではないようです。
5
5
 
6
6
  つまり、質問にある Person クラスに、「agerange を返す toString メソッド」が実装されていても、
7
7
  ```js

2

 

2022/07/03 07:15

投稿

退会済みユーザー
test CHANGED
@@ -1,7 +1,7 @@
1
1
 
2
2
  console.log() のlog メソッドの引数に何かを指定した場合に、引数に指定されたモノの toString メソッドが呼ばれるかどうかは[ブラウザの実装依存のようです](https://stackoverflow.com/questions/36215379/does-console-log-invokes-tostring-method-of-an-object)。
3
3
 
4
- 少なくとも、Windows の Chromeium Edgeでは、log メソッドに 独自のObject を指定した場合、その Object に toStringメソッドが実装されていても、自動的にそのメソッドが呼ばれるわけではないようです。
4
+ 少なくとも、Windows の Chromium Edgeでは、log メソッドに 独自のObject を指定した場合、その Object に toStringメソッドが実装されていても、自動的にそのメソッドが呼ばれるわけではないようです。
5
5
 
6
6
  つまり、質問にある Person クラスに、「agerange を返す toString メソッド」が実装されていても、
7
7
  ```js

1

 

2022/07/03 07:14

投稿

退会済みユーザー
test CHANGED
@@ -11,6 +11,7 @@
11
11
 
12
12
  また、
13
13
  ```js
14
+ (略)
14
15
  console.log(String(person));
15
16
  ```
16
17
  とすると