回答編集履歴

3

CoffeeScriptの余計なセミコロンを削除

2018/03/03 11:34

投稿

raccy
raccy

スコア21737

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

細かい表現の修正

2018/03/03 11:34

投稿

raccy
raccy

スコア21737

test CHANGED
@@ -1,4 +1,4 @@
1
- `method1`は通常の書き方です。`method2`は、2018年3月3日現在、仕様候補(stage 3)として提案中である[Class field declarations(クラスフィールド宣言)](https://github.com/tc39/proposal-class-fields)を用いた書き方です。**まだ、仕様には含まれておらず、また、このまま仕様に含まれることも決定されたわけではありません。**Babelでのトランスパイルは対応していますが、ブラウザでは対応している物が一つもありません。
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

誤字の修正

2018/03/03 11:33

投稿

raccy
raccy

スコア21737

test CHANGED
@@ -74,7 +74,7 @@
74
74
 
75
75
 
76
76
 
77
- 指定された回数分だけ1秒毎(あまり正確ではない)にカウントダウンするという意図のコードです。**このコードはこのままでは正常に動作しません。**二回目の`countDown`の呼び出しでは`this`がそのインスタンスではなくなるからです。これはアロー関数や`bind`等で`this`が束縛されていない関数がコールバック等で呼び出されるとき、`this`は呼び出し側の関数に依存することに起因します。いわゆる`this`問題というものです。これを現在のECMAScript 2017で修正する方法は三つです。
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のたにBabelを使うのだから、Babelが対応しているクラスフィールド宣言を使ってもさほど問題が無いと考えられます。
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