回答編集履歴
3
表現の修正
answer
CHANGED
@@ -11,4 +11,4 @@
|
|
11
11
|
後方の括弧内の値は関数への引数に対応します。
|
12
12
|
「javascript 即時実行 引数」あたりでGoogle検索するとそれらしい記事がhitすると思います。
|
13
13
|
ここで引き渡されたthisは(その括弧の中では)未定義なので、this.div.addEventListener('click',(function(i){})(this),false);これの外まで探索され、そこにあるthisが参照されます。
|
14
|
-
該当
|
14
|
+
「該当範囲に変数が無くても、外側にあるならばそれが使用される」のがクロージャーの特徴という主旨の記事なんじゃないかと思います。
|
2
修正
answer
CHANGED
@@ -10,5 +10,5 @@
|
|
10
10
|
こういう構造になっています。functionを括弧で包むとその関数はそこで即時実行されます。
|
11
11
|
後方の括弧内の値は関数への引数に対応します。
|
12
12
|
「javascript 即時実行 引数」あたりでGoogle検索するとそれらしい記事がhitすると思います。
|
13
|
-
ここで引き渡されたthisはthis.div.addEventListener('click',(function(i){})(this),false);これの外まで探索され、そこにあるthisが参照されます。
|
13
|
+
ここで引き渡されたthisは(その括弧の中では)未定義なので、this.div.addEventListener('click',(function(i){})(this),false);これの外まで探索され、そこにあるthisが参照されます。
|
14
|
-
無い
|
14
|
+
該当スコープに変数が無い場合、外のスコープにあるならばそれが使用されるのがクロージャーの特徴という主旨の記事なんじゃないでしょうか?
|
1
修正
answer
CHANGED
@@ -1,13 +1,14 @@
|
|
1
|
-
|
1
|
+
###質問1への関して
|
2
2
|
> this.div = document.createElement("div");
|
3
3
|
this.div.addEventListener
|
4
4
|
|
5
5
|
ページに表示されるdiv要素はthis.divには紐付けられていますが、Mydivそのものでは無いからではないでしょうか?click時に呼び出された関数のthisはdiv1のdomオブジェクトの方であり、Mydivのインスタンスでは無いといった感じ?
|
6
6
|
> addEventListener() を使って要素にハンドラ関数を設定したとき、ハンドラの中の this の値は要素への参照となります。これはハンドラに渡された event 引数の currentTarget プロパティの値と同じです。[MDN](https://developer.mozilla.org/ja/docs/Web/API/EventTarget/addEventListener)
|
7
7
|
|
8
|
-
|
8
|
+
###質問2に関して
|
9
9
|
(function(i){})(this)
|
10
10
|
こういう構造になっています。functionを括弧で包むとその関数はそこで即時実行されます。
|
11
|
-
括弧内の値は関数への引数に
|
11
|
+
後方の括弧内の値は関数への引数に対応します。
|
12
|
+
「javascript 即時実行 引数」あたりでGoogle検索するとそれらしい記事がhitすると思います。
|
12
13
|
ここで引き渡されたthisはthis.div.addEventListener('click',(function(i){})(this),false);これの外まで探索され、そこにあるthisが参照されます。
|
13
14
|
無いときに外のスコープまで探しに行くのがクロージャーの特徴という意味合いの記事なんじゃないでしょうか?
|