JavaScriptのthisを復習

時々混乱するので、メモとして書き残しておく。

基本概念「thisがなにを指すかは実行時に決まる。その関数をもつオブジェクト。」


var taro = {
	name: "Taro",
	hello: function(){
		alert("Hello! " + this.name);
	}
}
var hanako = {
	name: "Hanako"
}
hanako.hello = taro.hello;
var helloFunc = taro.hello;

taro.hello();→”Hello! Taro”
taroオブジェクトに属する関数helloを実行

hanako.hello();→”Hello! Hanako”
hanakoオブジェクトに属する関数helloを実行

helloFunc();→”Hello! ” (window.nameは””)
helloFunc関数を実行(this未指定はトップレベルオブジェクトになる。windowなど)

helloFunc.call(taro);→”Hello! Taro”
helloFunc関数を、taroオブジェクトをthisとして扱うように実行

helloFunc.call(hanako);→”Hello! Hanako”
helloFunc関数を、hanakoオブジェクトをthisとして扱うように実行


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)