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として扱うように実行


a

コメントを残す

メールアドレスが公開されることはありません。

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

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください