イベントハンドラ内でのthisが参照するオブジェクトは、イベントハンドラを設定した要素自身になります。例えば次のような記述の場合は特に問題は無いでしょう。
document.getElementById("foo").onclick=function() { /*thisは、#fooの要素*/}
しかし、次のような場合、thisとしてlibを期待するかもしれませんが、やはりthisはイベントハンドラを設定した要素になります。
var listener = function() {}; lib.handleClick = function(event) {/*thisはlib?*/}; document.getElementById("foo").onclick = lib.handleClick;
lib.handleClick内でthisとしてlibを参照したい場合は、次のように無名関数でラップして設定します。
document.getElementById("foo").onclick = function(event) { lib.handleClick(event); // => lib.handleClick内でのthisはlibになる。 };
以下略
パーフェクトjavascript271-272頁より
上記の引用文自体は、理解できますが、その中にでてくるlibが何なのか良くわかりません。単純にvarをつけずに宣言した、関数の中でもグローバル変数になってしまうやつなのでしょうか。
それとも組み込み済みの関数というかオブジェクトのlib内のプロパティhandleClickに
無名関数を代入しているだけなのでしょうか。
引用文の数頁前にlibがvar付きで宣言されているのか、と思い確認してみましたがそのような内容もありませんでした。
このlibって何者なのでしょうか。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。