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

回答編集履歴

2

訂正2

2019/12/22 06:18

投稿

AkitoshiManabe
AkitoshiManabe

スコア5434

answer CHANGED
@@ -32,10 +32,16 @@
32
32
  いえ、1つ目は、コンストラクタ関数(Ctor)内で、state プロパティを初期化していますが、
33
33
  2つ目は、コンストラクタ関数の[[Prototype]]に定義されたオブジェクトを**分割代入**することで、stateプロパティは初期化する必要がなくなっています。
34
34
 
35
+ class ブロックの書き方が変わったというのもあります。
36
+ 1つ目はプロパティを書くシンタックスシュガーが実装されておらず、関数内で state プロパティに代入する必要があった。2つ目はその制約が解消され、分割代入の恩恵により [[Prototype]] に予め定義されている state の count(プリミティブ) を参照するだけでよくなった。
37
+
38
+
35
39
  > 1つ目のconstructor内ではthis.stateとthisが必要であるが、2つ目ではなぜthisが必要ではないのか。
36
40
 
41
+ constructor内に限らず、メンバ関数内では、メンバを参照するときにthisが必要です。
37
- 1つ目はプロパティを書くシンタックスシュガーが実装されておらず、関数内で state プロパティに代入する必要があったため。2つ目はそ制約が解消され分割代入の恩恵により [[Prototype]] に予め定義されている state の count(プリミティブ) を参照するだけでよくなっているため
42
+ 2つ目の方法でrender() 内部で this.state を参照するときに thisを使っています。
38
43
 
44
+
39
45
  > class fields proposal これがなにを意味しているのか
40
46
 
41
47
  class field(オブジェクトのメンバの書き方) + proposal(提案) ということで、class ブロックの書き方(シンタックスシュガー)のルールを詰めていこうという、仕様策定されている人たちのご都合を意味しています。

1

訂正

2019/12/22 06:18

投稿

AkitoshiManabe
AkitoshiManabe

スコア5434

answer CHANGED
@@ -34,8 +34,7 @@
34
34
 
35
35
  > 1つ目のconstructor内ではthis.stateとthisが必要であるが、2つ目ではなぜthisが必要ではないのか。
36
36
 
37
- 1つ目は関数内で state プロパティに代入するため。
38
- 2つ目は分割代入の恩恵により [[Prototype]] に予め定義されている state の count(プリミティブ) を参照するだけでよくなっているため
37
+ 1つ目はプロパティを書くシンタックスシュガーが実装されておらず、関数内で state プロパティに代入する必要があったため。2つ目はその制約が解消され、分割代入の恩恵により [[Prototype]] に予め定義されている state の count(プリミティブ) を参照するだけでよくなっているため
39
38
 
40
39
  > class fields proposal これがなにを意味しているのか
41
40