これを行う:
getData: function ()
{
this.age = 34 //notice this
}
次の利点があります。
名前を別のものに変更する必要がある場合でもobj
、オブジェクトを として参照するため、関数を変更する必要はありませんthis
。
より移植性があります。別のオブジェクトで同じ機能が必要な場合は、コピー/貼り付けが簡単です。
クリック ハンドラについて
そうは言っても、コードがクリック ハンドラで使用される場合は注意が必要です。例えば:
var obj = {
value: 'hello world',
doSomething: function ()
{
alert(this.value);
}
}
// find first <div> on the page and attach click handler
var firstDiv = document.getElementsByTagName('div')[0];
firstDiv.addEventListener('click', obj.doSomething, false);
<div>
をクリックすると、 が呼び出されますがobj.doSomething
、オブジェクトがthis
参照されるようになりましたwindow
。これは予期しないことであり、コードは「未定義」と警告します。
これを修正するには、ヘルパー関数を記述する必要があります。
firstDiv.addEventListener('click', function() {
obj.doSomething();
}, false);