回答編集履歴
9
修正
    
        answer	
    CHANGED
    
    | 
         @@ -10,12 +10,12 @@ 
     | 
|
| 
       10 
10 
     | 
    
         
             
            ご提示の[ToDoリスト例](https://jp.vuejs.org/v2/examples/todomvc.html)に関しても、ウォッチャが監視している`todos`はオブジェクトを値に持つ配列なので、`handler`を消してしまうと正しく機能せず`todoStorage.save`が発火していないのが分かると思います。
         
     | 
| 
       11 
11 
     | 
    
         
             
            試しに`todoStorageのsaveメソッド`に`alert('fired')`を追記し、どのタイミングで呼ばれているのか確認すると分かりやすいです。
         
     | 
| 
       12 
12 
     | 
    
         
             
            例えば、リストの左にあるチェックボックス(`.toggle`)にチェックを入れると該当の`todos[index].completed`を`true`に変更するので、このタイミングでウォッチャが反応しますが、`handler`を消してしまうと変更を感知できず`todoStorage.save`は発火しません。
         
     | 
| 
       13 
     | 
    
         
            -
            また`todos[index].title`を編集 
     | 
| 
      
 13 
     | 
    
         
            +
            またテキストボックス(`.edit`)から`todos[index].title`を編集する時も同じです。
         
     | 
| 
       14 
14 
     | 
    
         
             
            変更後にリロードしてみると、ローカルストレージに保存できていないのが分かると思います。
         
     | 
| 
       15 
15 
     | 
    
         | 
| 
       16 
16 
     | 
    
         
             
            恐らく__Nero1129さん__が「handlerを消しても動作する」と仰っているのは、`addTodo`を実行した時の事だと思いますが、この場合は配列にオブジェクトをpushしているだけなので`handler`が無くてもウォッチャは変更を感知できます。
         
     | 
| 
       17 
17 
     | 
    
         
             
            そのため`todoStorage.save`が発火しローカルストレージに保存できています。
         
     | 
| 
       18 
18 
     | 
    
         | 
| 
       19 
19 
     | 
    
         
             
            **まとめ:**
         
     | 
| 
       20 
     | 
    
         
            -
            `handler`を消してしまうと、`addTodo`での変更はローカルストレージに保存されるが、` 
     | 
| 
      
 20 
     | 
    
         
            +
            `handler`を消してしまうと、`addTodo`での変更はローカルストレージに保存されるが、`.edit`や`.toggle`でのプロパティの変更はウォッチャが感知できずにローカルストレージに保存されない。
         
     | 
| 
       21 
21 
     | 
    
         
             
            そのため、一見すると問題無く動いているように見えるが、実際は期待された動作が正しく行われていない。
         
     | 
8
脱字を修正
    
        answer	
    CHANGED
    
    | 
         @@ -9,7 +9,7 @@ 
     | 
|
| 
       9 
9 
     | 
    
         
             
            **追記:**
         
     | 
| 
       10 
10 
     | 
    
         
             
            ご提示の[ToDoリスト例](https://jp.vuejs.org/v2/examples/todomvc.html)に関しても、ウォッチャが監視している`todos`はオブジェクトを値に持つ配列なので、`handler`を消してしまうと正しく機能せず`todoStorage.save`が発火していないのが分かると思います。
         
     | 
| 
       11 
11 
     | 
    
         
             
            試しに`todoStorageのsaveメソッド`に`alert('fired')`を追記し、どのタイミングで呼ばれているのか確認すると分かりやすいです。
         
     | 
| 
       12 
     | 
    
         
            -
            リストの左にあるチェックボックス(`.toggle`)にチェックを入れると該当の`todos[index].completed`を`true`に変更するので、このタイミングでウォッチャが反応しますが、`handler`を消してしまうと変更を感知できず`todoStorage.save`は発火しません。
         
     | 
| 
      
 12 
     | 
    
         
            +
            例えば、リストの左にあるチェックボックス(`.toggle`)にチェックを入れると該当の`todos[index].completed`を`true`に変更するので、このタイミングでウォッチャが反応しますが、`handler`を消してしまうと変更を感知できず`todoStorage.save`は発火しません。
         
     | 
| 
       13 
13 
     | 
    
         
             
            また`todos[index].title`を編集して`doneEdit`が発火した時も同じです。
         
     | 
| 
       14 
14 
     | 
    
         
             
            変更後にリロードしてみると、ローカルストレージに保存できていないのが分かると思います。
         
     | 
| 
       15 
15 
     | 
    
         | 
7
記入漏れを修正
    
        answer	
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ウォッチャがオブジェクト内の変更を感知した際に実行する処理を記載する場所が`handler`です。
         
     | 
| 
       2 
2 
     | 
    
         | 
| 
       3 
3 
     | 
    
         
             
            例えば以下の①の場合のコードは`handler`が無くても動きますが、②のコードは**動きません**。
         
     | 
| 
       4 
     | 
    
         
            -
            そのため③のコードのように`deep: true`とhandlerを用いて値の変更を監視します。
         
     | 
| 
      
 4 
     | 
    
         
            +
            そのため③のコードのように`deep: true`と`handler`を用いて値の変更を監視します。
         
     | 
| 
       5 
5 
     | 
    
         
             
            ①[https://jsfiddle.net/svudfLoc/](https://jsfiddle.net/svudfLoc/)
         
     | 
| 
       6 
6 
     | 
    
         
             
            ②[https://jsfiddle.net/5gxa10cy/](https://jsfiddle.net/5gxa10cy/)
         
     | 
| 
       7 
7 
     | 
    
         
             
            ③[https://jsfiddle.net/w0kv2b6x/](https://jsfiddle.net/w0kv2b6x/)
         
     | 
| 
         @@ -9,7 +9,7 @@ 
     | 
|
| 
       9 
9 
     | 
    
         
             
            **追記:**
         
     | 
| 
       10 
10 
     | 
    
         
             
            ご提示の[ToDoリスト例](https://jp.vuejs.org/v2/examples/todomvc.html)に関しても、ウォッチャが監視している`todos`はオブジェクトを値に持つ配列なので、`handler`を消してしまうと正しく機能せず`todoStorage.save`が発火していないのが分かると思います。
         
     | 
| 
       11 
11 
     | 
    
         
             
            試しに`todoStorageのsaveメソッド`に`alert('fired')`を追記し、どのタイミングで呼ばれているのか確認すると分かりやすいです。
         
     | 
| 
       12 
     | 
    
         
            -
            リストの左にあるチェックボックス(`.toggle`)にチェックを入れると該当の`todos[index].completed`を`true`に変更するので、このタイミングでウォッチャが反応しますが、`handler`を消してしまうと変更を 
     | 
| 
      
 12 
     | 
    
         
            +
            リストの左にあるチェックボックス(`.toggle`)にチェックを入れると該当の`todos[index].completed`を`true`に変更するので、このタイミングでウォッチャが反応しますが、`handler`を消してしまうと変更を感知できず`todoStorage.save`は発火しません。
         
     | 
| 
       13 
13 
     | 
    
         
             
            また`todos[index].title`を編集して`doneEdit`が発火した時も同じです。
         
     | 
| 
       14 
14 
     | 
    
         
             
            変更後にリロードしてみると、ローカルストレージに保存できていないのが分かると思います。
         
     | 
| 
       15 
15 
     | 
    
         | 
6
誤字を修正
    
        answer	
    CHANGED
    
    | 
         @@ -7,7 +7,7 @@ 
     | 
|
| 
       7 
7 
     | 
    
         
             
            ③[https://jsfiddle.net/w0kv2b6x/](https://jsfiddle.net/w0kv2b6x/)
         
     | 
| 
       8 
8 
     | 
    
         | 
| 
       9 
9 
     | 
    
         
             
            **追記:**
         
     | 
| 
       10 
     | 
    
         
            -
            ご提示の[ToDoリスト例](https://jp.vuejs.org/v2/examples/todomvc.html)に関しても、ウォッチャ 
     | 
| 
      
 10 
     | 
    
         
            +
            ご提示の[ToDoリスト例](https://jp.vuejs.org/v2/examples/todomvc.html)に関しても、ウォッチャが監視している`todos`はオブジェクトを値に持つ配列なので、`handler`を消してしまうと正しく機能せず`todoStorage.save`が発火していないのが分かると思います。
         
     | 
| 
       11 
11 
     | 
    
         
             
            試しに`todoStorageのsaveメソッド`に`alert('fired')`を追記し、どのタイミングで呼ばれているのか確認すると分かりやすいです。
         
     | 
| 
       12 
12 
     | 
    
         
             
            リストの左にあるチェックボックス(`.toggle`)にチェックを入れると該当の`todos[index].completed`を`true`に変更するので、このタイミングでウォッチャが反応しますが、`handler`を消してしまうと変更を検知できず`todoStorage.save`は発火しません。
         
     | 
| 
       13 
13 
     | 
    
         
             
            また`todos[index].title`を編集して`doneEdit`が発火した時も同じです。
         
     | 
5
文章を微修正
    
        answer	
    CHANGED
    
    | 
         @@ -1,4 +1,4 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            ウォッチャがオブジェクト内の変更を 
     | 
| 
      
 1 
     | 
    
         
            +
            ウォッチャがオブジェクト内の変更を感知した際に実行する処理を記載する場所が`handler`です。
         
     | 
| 
       2 
2 
     | 
    
         | 
| 
       3 
3 
     | 
    
         
             
            例えば以下の①の場合のコードは`handler`が無くても動きますが、②のコードは**動きません**。
         
     | 
| 
       4 
4 
     | 
    
         
             
            そのため③のコードのように`deep: true`とhandlerを用いて値の変更を監視します。
         
     | 
| 
         @@ -6,7 +6,7 @@ 
     | 
|
| 
       6 
6 
     | 
    
         
             
            ②[https://jsfiddle.net/5gxa10cy/](https://jsfiddle.net/5gxa10cy/)
         
     | 
| 
       7 
7 
     | 
    
         
             
            ③[https://jsfiddle.net/w0kv2b6x/](https://jsfiddle.net/w0kv2b6x/)
         
     | 
| 
       8 
8 
     | 
    
         | 
| 
       9 
     | 
    
         
            -
            追記:
         
     | 
| 
      
 9 
     | 
    
         
            +
            **追記:**
         
     | 
| 
       10 
10 
     | 
    
         
             
            ご提示の[ToDoリスト例](https://jp.vuejs.org/v2/examples/todomvc.html)に関しても、ウォッチャーが監視している`todos`はオブジェクトを値に持つ配列なので、`handler`を消してしまうと正しく機能せず`todoStorage.save`が発火していないのが分かると思います。
         
     | 
| 
       11 
11 
     | 
    
         
             
            試しに`todoStorageのsaveメソッド`に`alert('fired')`を追記し、どのタイミングで呼ばれているのか確認すると分かりやすいです。
         
     | 
| 
       12 
12 
     | 
    
         
             
            リストの左にあるチェックボックス(`.toggle`)にチェックを入れると該当の`todos[index].completed`を`true`に変更するので、このタイミングでウォッチャが反応しますが、`handler`を消してしまうと変更を検知できず`todoStorage.save`は発火しません。
         
     | 
| 
         @@ -16,6 +16,6 @@ 
     | 
|
| 
       16 
16 
     | 
    
         
             
            恐らく__Nero1129さん__が「handlerを消しても動作する」と仰っているのは、`addTodo`を実行した時の事だと思いますが、この場合は配列にオブジェクトをpushしているだけなので`handler`が無くてもウォッチャは変更を感知できます。
         
     | 
| 
       17 
17 
     | 
    
         
             
            そのため`todoStorage.save`が発火しローカルストレージに保存できています。
         
     | 
| 
       18 
18 
     | 
    
         | 
| 
       19 
     | 
    
         
            -
            **まとめ**
         
     | 
| 
      
 19 
     | 
    
         
            +
            **まとめ:**
         
     | 
| 
       20 
20 
     | 
    
         
             
            `handler`を消してしまうと、`addTodo`での変更はローカルストレージに保存されるが、`doneEdit`と`.toggle`でのプロパティの変更はウォッチャが感知できずにローカルストレージに保存されない。
         
     | 
| 
       21 
21 
     | 
    
         
             
            そのため、一見すると問題無く動いているように見えるが、実際は期待された動作が正しく行われていない。
         
     | 
4
表現を分かりやすく修正
    
        answer	
    CHANGED
    
    | 
         @@ -9,11 +9,11 @@ 
     | 
|
| 
       9 
9 
     | 
    
         
             
            追記:
         
     | 
| 
       10 
10 
     | 
    
         
             
            ご提示の[ToDoリスト例](https://jp.vuejs.org/v2/examples/todomvc.html)に関しても、ウォッチャーが監視している`todos`はオブジェクトを値に持つ配列なので、`handler`を消してしまうと正しく機能せず`todoStorage.save`が発火していないのが分かると思います。
         
     | 
| 
       11 
11 
     | 
    
         
             
            試しに`todoStorageのsaveメソッド`に`alert('fired')`を追記し、どのタイミングで呼ばれているのか確認すると分かりやすいです。
         
     | 
| 
       12 
     | 
    
         
            -
            リストの左にあるチェックボックスにチェックを入れると該当の`todos[index].completed`を`true`に変更するので、このタイミングでウォッチャが反応しますが、`handler`を消してしまうと変更を検知できず`todoStorage.save`は発火しません。
         
     | 
| 
      
 12 
     | 
    
         
            +
            リストの左にあるチェックボックス(`.toggle`)にチェックを入れると該当の`todos[index].completed`を`true`に変更するので、このタイミングでウォッチャが反応しますが、`handler`を消してしまうと変更を検知できず`todoStorage.save`は発火しません。
         
     | 
| 
       13 
13 
     | 
    
         
             
            また`todos[index].title`を編集して`doneEdit`が発火した時も同じです。
         
     | 
| 
       14 
     | 
    
         
            -
            変更後にリロードしてみると、 
     | 
| 
      
 14 
     | 
    
         
            +
            変更後にリロードしてみると、ローカルストレージに保存できていないのが分かると思います。
         
     | 
| 
       15 
15 
     | 
    
         | 
| 
       16 
     | 
    
         
            -
            恐らく 
     | 
| 
      
 16 
     | 
    
         
            +
            恐らく__Nero1129さん__が「handlerを消しても動作する」と仰っているのは、`addTodo`を実行した時の事だと思いますが、この場合は配列にオブジェクトをpushしているだけなので`handler`が無くてもウォッチャは変更を感知できます。
         
     | 
| 
       17 
17 
     | 
    
         
             
            そのため`todoStorage.save`が発火しローカルストレージに保存できています。
         
     | 
| 
       18 
18 
     | 
    
         | 
| 
       19 
19 
     | 
    
         
             
            **まとめ**
         
     | 
3
間違い箇所を訂正・処理流れを詳細に記述
    
        answer	
    CHANGED
    
    | 
         @@ -1,7 +1,21 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            ウォッチャ 
     | 
| 
      
 1 
     | 
    
         
            +
            ウォッチャがオブジェクト内の変更を検知した際に実行する処理を記載する場所が`handler`です。
         
     | 
| 
       2 
2 
     | 
    
         | 
| 
       3 
3 
     | 
    
         
             
            例えば以下の①の場合のコードは`handler`が無くても動きますが、②のコードは**動きません**。
         
     | 
| 
       4 
4 
     | 
    
         
             
            そのため③のコードのように`deep: true`とhandlerを用いて値の変更を監視します。
         
     | 
| 
       5 
5 
     | 
    
         
             
            ①[https://jsfiddle.net/svudfLoc/](https://jsfiddle.net/svudfLoc/)
         
     | 
| 
       6 
6 
     | 
    
         
             
            ②[https://jsfiddle.net/5gxa10cy/](https://jsfiddle.net/5gxa10cy/)
         
     | 
| 
       7 
     | 
    
         
            -
            ③[https://jsfiddle.net/w0kv2b6x/](https://jsfiddle.net/w0kv2b6x/)
         
     | 
| 
      
 7 
     | 
    
         
            +
            ③[https://jsfiddle.net/w0kv2b6x/](https://jsfiddle.net/w0kv2b6x/)
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
            追記:
         
     | 
| 
      
 10 
     | 
    
         
            +
            ご提示の[ToDoリスト例](https://jp.vuejs.org/v2/examples/todomvc.html)に関しても、ウォッチャーが監視している`todos`はオブジェクトを値に持つ配列なので、`handler`を消してしまうと正しく機能せず`todoStorage.save`が発火していないのが分かると思います。
         
     | 
| 
      
 11 
     | 
    
         
            +
            試しに`todoStorageのsaveメソッド`に`alert('fired')`を追記し、どのタイミングで呼ばれているのか確認すると分かりやすいです。
         
     | 
| 
      
 12 
     | 
    
         
            +
            リストの左にあるチェックボックスにチェックを入れると該当の`todos[index].completed`を`true`に変更するので、このタイミングでウォッチャが反応しますが、`handler`を消してしまうと変更を検知できず`todoStorage.save`は発火しません。
         
     | 
| 
      
 13 
     | 
    
         
            +
            また`todos[index].title`を編集して`doneEdit`が発火した時も同じです。
         
     | 
| 
      
 14 
     | 
    
         
            +
            変更後にリロードしてみると、変更が保存できていないのが分かると思います。
         
     | 
| 
      
 15 
     | 
    
         
            +
             
     | 
| 
      
 16 
     | 
    
         
            +
            恐らくNero1129さんが「handlerを消しても動作する」と仰っているのは、`addTodo`を実行した時の事だと思いますが、この場合は配列にオブジェクトをpushしているだけなので`handler`が無くてもウォッチャは変更を検知できます。
         
     | 
| 
      
 17 
     | 
    
         
            +
            そのため`todoStorage.save`が発火しローカルストレージに保存できています。
         
     | 
| 
      
 18 
     | 
    
         
            +
             
     | 
| 
      
 19 
     | 
    
         
            +
            **まとめ**
         
     | 
| 
      
 20 
     | 
    
         
            +
            `handler`を消してしまうと、`addTodo`での変更はローカルストレージに保存されるが、`doneEdit`と`.toggle`でのプロパティの変更はウォッチャが感知できずにローカルストレージに保存されない。
         
     | 
| 
      
 21 
     | 
    
         
            +
            そのため、一見すると問題無く動いているように見えるが、実際は期待された動作が正しく行われていない。
         
     | 
2
脱字を修正
    
        answer	
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ウォッチャーがネストされたものの変更を検知した際に実行する処理を記載する場所が`handler`です。
         
     | 
| 
       2 
2 
     | 
    
         | 
| 
       3 
     | 
    
         
            -
            例えば以下の①の場合のコードは`handler`が無くても動きますが、②のコードは動きません。
         
     | 
| 
      
 3 
     | 
    
         
            +
            例えば以下の①の場合のコードは`handler`が無くても動きますが、②のコードは**動きません**。
         
     | 
| 
       4 
     | 
    
         
            -
            そのため③のコードように`deep: true`とhandlerを用いて値の変更を監視します。
         
     | 
| 
      
 4 
     | 
    
         
            +
            そのため③のコードのように`deep: true`とhandlerを用いて値の変更を監視します。
         
     | 
| 
       5 
5 
     | 
    
         
             
            ①[https://jsfiddle.net/svudfLoc/](https://jsfiddle.net/svudfLoc/)
         
     | 
| 
       6 
6 
     | 
    
         
             
            ②[https://jsfiddle.net/5gxa10cy/](https://jsfiddle.net/5gxa10cy/)
         
     | 
| 
       7 
7 
     | 
    
         
             
            ③[https://jsfiddle.net/w0kv2b6x/](https://jsfiddle.net/w0kv2b6x/)
         
     | 
1
回答をよりわかり易い表現に修正
    
        answer	
    CHANGED
    
    | 
         @@ -1,2 +1,7 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            ウォッチャーが変更を検知した際に実行する処理を記載する場所が`handler`です。
         
     | 
| 
      
 1 
     | 
    
         
            +
            ウォッチャーがネストされたものの変更を検知した際に実行する処理を記載する場所が`handler`です。
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            例えば以下の①の場合のコードは`handler`が無くても動きますが、②のコードは動きません。
         
     | 
| 
       2 
     | 
    
         
            -
             
     | 
| 
      
 4 
     | 
    
         
            +
            そのため③のコードように`deep: true`とhandlerを用いて値の変更を監視します。
         
     | 
| 
      
 5 
     | 
    
         
            +
            ①[https://jsfiddle.net/svudfLoc/](https://jsfiddle.net/svudfLoc/)
         
     | 
| 
      
 6 
     | 
    
         
            +
            ②[https://jsfiddle.net/5gxa10cy/](https://jsfiddle.net/5gxa10cy/)
         
     | 
| 
      
 7 
     | 
    
         
            +
            ③[https://jsfiddle.net/w0kv2b6x/](https://jsfiddle.net/w0kv2b6x/)
         
     |