JavaScriptのthisキーワードをちゃんと理解する
白石俊平
2008/04/09 19:00
JavaScriptで「自分自身」にアクセスするthisキーワードについてきちんと理解していますか? 今回はthisキーワードに関してです。
イベントハンドラ中のthisは混乱のもと
前のページで述べたことは、実際それほど難しいことではありません。ですが、プログラムの書き方によっては(特にオブジェクト指向的なコードを書いているとき)、thisが何を指すのか混乱してしまい、バグの元になることもあります。
以下のコードを見てください。画面にボタンを一つだけ配置し、押されると「こんにちは!白石」と表示するのが目的のプログラムです。
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<script type="text/javascript">
var shiraishi = {
name: "白石",
// initメソッドは、body.onloadから呼ばれる
init: function() {
var button = document.getElementById("button");
// ボタンのイベントハンドラに、メソッドhelloをセット
button.onclick = this.hello;
},
hello: function() {
alert("こんにちは!" + this.name);
}
};
</script>
</head>
<body onload="shiraishi.init()">
<button id="button" name="ボタン">クリック!</button>
</body>
</html>
ですが、このプログラムを実行した結果は「こんにちは!白石」ではなく、以下のようになりました。
なぜこうなったかお分かりですか?(ヒント:buttonタグのname属性)
- 5人の推薦記事
- 0人がクリップ
-
ソーシャルブックマーク(-)
- トラックバック(0)
- 特集: JavaScriptのイロハ (17件)
- ホワイトペーパー
- 話題のタグ
Internet Explorer
PHP
Webアプリケーション開発
Database
CSS 3
iPhone 3G
Tips
HTML
仮想化
Eclipse
CSS
Microsoft
ライブラリ
Adobe
Flash
Mozilla
入門
ブラウザ
Leopard
Webデザイン
イロハ
開発環境
Opera
Mac OS X
オープンソース
Python
Java
Solaris
RIA
Google
SOA
iPod touch
Safari
リファレンス
iPhone
Apache
C/C++
フレームワーク
Linux
Firefox 3
Ruby
server
Off Topic
Ajax
小技
JavaScript
Apple
XHTML
Firefox
Windows
話題のタグを見る »
無料の「Oracle Database XE」で高速バッチ処理:実装のポイント
Firefoxで情報をカンタン・ベンリに整理する
iPhone Safari、Acidテストでは高得点でも…… Firefoxは載らないの?:WebサイトのiPhone 3G対応問題を考える(ソフト編)
WebサイトのiPhone 3G対応問題を考える(ハード編)
フォトレポート:時代を振り返る--「MS-DOS 4」のインストール
SOAと仮想化の関係は?--常に進化を続けるBEAのミドルウェア戦略
ウェブ開発の生産性はどうしたら上がる?--MODIPHI Appsで半日で作るマッシュアップサイト(1)
JailBreakついに:PwnageTool公開
プロジェクトの進行でよくある4つのトラブル
iPhoneに付く指紋が…… ひとまずおすすめのシリコンケース
contentプロパティでコンテンツを追加する(2):FirefoxとSafariのCSS
iPhone 24時間耐久レース:バッテリーは実際何時間?
フォームデザイン虎の巻:フォームの基礎をおさえる
ZDNet Japan ホスティング特集
DELLが掲げる「新・仮想化アセスメントサービス」
Techno Exchange
ZDNet Japan Green IT