回答編集履歴
3
CoffeeScriptの余計なセミコロンを削除
test
CHANGED
@@ -280,8 +280,8 @@
|
|
280
280
|
|
281
281
|
setTimeout(this.countDown, 1000)
|
282
282
|
|
283
|
-
ct = new CountSec(10)
|
283
|
+
ct = new CountSec(10)
|
284
|
-
|
284
|
+
|
285
|
-
ct.countDown()
|
285
|
+
ct.countDown()
|
286
|
-
|
286
|
+
|
287
|
-
```
|
287
|
+
```
|
2
細かい表現の修正
test
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
`method1`は通常の書き方です。`method2`は、2018年3月3日現在、仕様候補(stage 3)として提案中である[Class field declarations(クラスフィールド宣言)](https://github.com/tc39/proposal-class-fields)を用いた書き方です。**まだ、仕様には含まれておらず、また、このまま仕様に含まれること
|
1
|
+
`method1`は通常の書き方です。`method2`は、2018年3月3日現在、仕様候補(stage 3)として提案中である[Class field declarations(クラスフィールド宣言)](https://github.com/tc39/proposal-class-fields)を用いた書き方です。**まだ、仕様には含まれておらず、また、このまま仕様に含まれることが確定されたわけではありません。**Babelでのトランスパイルは対応していますが、ブラウザでは対応している物が一つもありません。
|
2
2
|
|
3
3
|
|
4
4
|
|
1
誤字の修正
test
CHANGED
@@ -74,7 +74,7 @@
|
|
74
74
|
|
75
75
|
|
76
76
|
|
77
|
-
指定された回数分だけ1秒毎(あまり正確ではない)にカウントダウンするという意図のコードです。**このコードはこのままでは正常に動作しません。**二回目の`countDown`の呼び出しでは`this`がそのインスタンスではなくなるからです。これはアロー関数や`bind`
|
77
|
+
指定された回数分だけ1秒毎(あまり正確ではない)にカウントダウンするという意図のコードです。**このコードはこのままでは正常に動作しません。**二回目の`countDown`の呼び出しでは`this`がそのインスタンスではなくなるからです。これはアロー関数や`bind`等で`this`が束縛されていない関数がコールバック等で呼び出されるとき、`this`は呼び出し側の関数に依存することに起因します。いわゆる`this`問題というものです。これを現在のECMAScript 2017で修正する方法は三つです。
|
78
78
|
|
79
79
|
|
80
80
|
|
@@ -198,7 +198,7 @@
|
|
198
198
|
|
199
199
|
|
200
200
|
|
201
|
-
これらの方法は、いずれも初めのコードよりは冗長です。よく読めば意味がわからないわけではありませんが、なぜそんなことをするのかという意図がつかみにくいです。ましてや、一つ目と二つ目は毎回関数生成、三つ目は`bind`の位置とメソッド定義位置が離れてしまうことを考えると、あまり良い方法とは言えません。
|
201
|
+
これらの方法は、いずれも初めのコードよりは冗長です。よく読めば意味がわからないわけではありませんが、なぜそんなことをするのかという意図がつかみにくいです。ましてや、一つ目と二つ目は毎回関数が生成されること、三つ目は`bind`の位置とメソッド定義位置が離れてしまうことを考えると、あまり良い方法とは言えません。
|
202
202
|
|
203
203
|
|
204
204
|
|
@@ -244,7 +244,7 @@
|
|
244
244
|
|
245
245
|
|
246
246
|
|
247
|
-
さて、この方法を使う機会が思いつかないという人が居るかも知れませんが、使う会が多いものを知っていますので、紹介します。それはReactです。[Handling Events - React](https://reactjs.org/docs/handling-events.html)にその実例が載っています。Reactではクリックなどのイベント発生時に呼び出す関数を登録するのですが、そのまま`this.handelEvent`と書いてしまうと同じ問題が発生します。それを防ぐ手段として、クラスフィールド宣言は有効とされています。Reactを使う場合、いずれにしてもJSXのた
|
247
|
+
さて、この方法を使う機会が思いつかないという人が居るかも知れませんが、使う機会が多いものを知っていますので、紹介します。それはReactです。[Handling Events - React](https://reactjs.org/docs/handling-events.html)にその実例が載っています。Reactではクリックなどのイベント発生時に呼び出す関数を登録するのですが、そのまま`this.handelEvent`等と書いてしまうと同じ問題が発生します。それを防ぐ手段として、クラスフィールド宣言は有効とされています。Reactを使う場合、いずれにしてもJSXのためにBabelをつかいますから、Babelが対応しているクラスフィールド宣言を使ってもさほど問題が無いと考えられます。
|
248
248
|
|
249
249
|
|
250
250
|
|