JSのthisといふもの

今までよくわかってなかったJSといふものをやり直してみんとしてすなり。 そもそもthis意味わかんねー、って思ってたんだけど、他の言語だとthisを書いた場所でthisが決まるのに対して、JSだとクロージャの呼び出し元がそのままthisになるから分かりにくいんだよね、これ。 xxx()だったら実質global.xxx()だからxxx()の中ではglobalがthisになるし、o.xxx()だったらoがthisになるし、o.xxx.bind(oo)やo.xxx.call(oo)だったらooがthisになるんだ、そういうことだ。 var xxx = new XXX()のときはXXXをクローンしたやつ(xxx)がXXXを呼び出すから、xxxがthisになって、そこになんやかんや。XXX.prototypeに入ってようとXXXに入ってようと、呼び出すのはxxxだから変わらない。 bindやcallは引数も渡せるみたいだし、thisは呼び出し元がゼロ個目の引数として渡されてるようなものなのかな。