質問編集履歴

2

デモコード修正

2020/12/10 23:43

投稿

_._
_._

スコア34

test CHANGED
File without changes
test CHANGED
@@ -8,7 +8,9 @@
8
8
 
9
9
  class A {
10
10
 
11
- static #bar = 'bar'
11
+ static _bar = 'bar'
12
+
13
+ static #baz = 'baz'
12
14
 
13
15
  static getFoo() {
14
16
 
@@ -18,7 +20,13 @@
18
20
 
19
21
  static getBar() {
20
22
 
21
- return this.#bar
23
+ return this._bar
24
+
25
+ }
26
+
27
+ static getBaz() {
28
+
29
+ return this.#baz
22
30
 
23
31
  }
24
32
 
@@ -42,9 +50,13 @@
42
50
 
43
51
  console.log('A.getBar()', A.getBar()) //OK
44
52
 
53
+ console.log('A.getBaz()', A.getBaz()) //OK
54
+
45
55
  console.log('B.getFoo()', B.getFoo()) //OK
46
56
 
57
+ console.log('B.getBar()', B.getBar()) //OK
58
+
47
- console.log('B.getBar()', B.getBar()) //NG //Uncaught TypeError: Cannot read private member #bar from an object whose class did not declare it
59
+ console.log('B.getBaz()', B.getBaz()) //NG //Uncaught TypeError: Cannot read private member #baz from an object whose class did not declare it
48
60
 
49
61
  ```
50
62
 
@@ -56,7 +68,9 @@
56
68
 
57
69
  class A {
58
70
 
59
- static #bar = 'bar'
71
+ static _bar = 'bar'
72
+
73
+ static #baz = 'baz'
60
74
 
61
75
  static get foo() {
62
76
 
@@ -66,7 +80,13 @@
66
80
 
67
81
  static get bar() {
68
82
 
69
- return this.#bar
83
+ return this._bar
84
+
85
+ }
86
+
87
+ static get baz() {
88
+
89
+ return this.#baz
70
90
 
71
91
  }
72
92
 
@@ -90,17 +110,21 @@
90
110
 
91
111
  console.log('A.bar', A.bar) //OK
92
112
 
113
+ console.log('A.baz', A.baz) //OK
114
+
93
115
  console.log('B.foo', B.foo) //OK
94
116
 
117
+ console.log('B.bar', B.bar) //OK
118
+
95
- console.log('B.bar', B.bar) //NG //Uncaught TypeError: Cannot read private member #bar from an object whose class did not declare it
119
+ console.log('B.baz', B.baz) //NG //Uncaught TypeError: Cannot read private member #baz from an object whose class did not declare it
96
120
 
97
121
  ```
98
122
 
99
- 「`#bar`」が宣言されていないので呼べません!的なことを言われますが普通はどうするものですか?
123
+ 「`#baz`」が宣言されていないので呼べません!的なことを言われますが普通はどうするものですか?
100
124
 
101
125
 
102
126
 
103
- 「`B.getBar()`」も「`B.bar`」もエラーなく呼びたいです。
127
+ 「`B.getBaz()`」も「`B.baz`」もエラーなく呼びたいです。
104
128
 
105
129
 
106
130
 

1

デモコード追加

2020/12/10 23:43

投稿

_._
_._

スコア34

test CHANGED
@@ -1 +1 @@
1
- 継承すると、静的プライベートフィールドを参照している静的メソッドでタイプエラー
1
+ 継承すると、静的プライベートフィールドを参照している静的メソッドでエラー
test CHANGED
@@ -1,6 +1,58 @@
1
1
  # 継承すると、静的プライベートフィールドを参照している静的メソッドでタイプエラーが出ます
2
2
 
3
3
  ```javascript
4
+
5
+ //メソッド
6
+
7
+
8
+
9
+ class A {
10
+
11
+ static #bar = 'bar'
12
+
13
+ static getFoo() {
14
+
15
+ return 'foo'
16
+
17
+ }
18
+
19
+ static getBar() {
20
+
21
+ return this.#bar
22
+
23
+ }
24
+
25
+ }
26
+
27
+
28
+
29
+ class B extends A {
30
+
31
+ constructor() {
32
+
33
+ super()
34
+
35
+ }
36
+
37
+ }
38
+
39
+
40
+
41
+ console.log('A.getFoo()', A.getFoo()) //OK
42
+
43
+ console.log('A.getBar()', A.getBar()) //OK
44
+
45
+ console.log('B.getFoo()', B.getFoo()) //OK
46
+
47
+ console.log('B.getBar()', B.getBar()) //NG //Uncaught TypeError: Cannot read private member #bar from an object whose class did not declare it
48
+
49
+ ```
50
+
51
+ ```javascript
52
+
53
+ //ゲッター
54
+
55
+
4
56
 
5
57
  class A {
6
58
 
@@ -44,11 +96,11 @@
44
96
 
45
97
  ```
46
98
 
47
- 「#bar」が宣言されていないので呼べません!的なことを言われますが普通はどうするものですか?
99
+ `#bar`」が宣言されていないので呼べません!的なことを言われますが普通はどうするものですか?
48
100
 
49
101
 
50
102
 
51
- 「B.bar」もエラーなく呼びたいです。
103
+ `B.getBar()`」も「`B.bar`」もエラーなく呼びたいです。
52
104
 
53
105
 
54
106