setTimeout()の第一引数調査
以前setTimeout()の第一引数を、文字列にするか関数オブジェクトにするかの違いをちょっと書いたけど、
その調査のその後。
オブジェクトに付随するメソッドを呼び出すときにthisがオブジェクトそのものになるか(第一引数を文字列にしたとき)、
windowになる(第一引数をオブジェクトにしたとき)かの違いがありました。
setTimeout('obj.func()', 1000);
→ obj.funcの中でthisはobjを指す。
setTimeout(obj.func, 1000);
→ obj.funcの中でthisはwindowを指す。
そのため、
obj.prop='hello';としておいて、obj.func()からthis.propを参照しても、obj.propの意味にならない。
http://home.wi-wi.jp/lab/00l/
実験室の方でコードサンプルを書いています。