Javascriptの「this」は日本語の「僕」みたいなものだ、と言ってみるテスト
2007.11.08
先日のエントリーで、Javascriptのthisについてブツブツと言ってみたところ、なかなか良いトラックバックが返って来たので紹介。
setInterval(this.callback, 33)がうまく動かない理由
コメント欄でも少し会話を続けたのだが、こんな「ゆるい」コミュニケーションがとても心地良い今日このごろ。
◇ ◇ ◇
ちなみに、thisの説明をするときに、「Javascriptのthisは日本語の「僕」みたいなもの」と言ってみるのはどうだろう。
太郎「僕はPerlが好き」 // この「僕」は、
次郎「僕はやっぱりPHPだよ」 // この「僕」とも違うし
太郎「三郎だったら『僕は絶対Ruby』と言うに決まってるよ」 // この「僕」とも違う
ただし気をつけなければいけないのは、太郎が次郎に向かって、
「三郎に会ったら『僕に電話して』って伝えといて」
と言った場合、日本語なら「僕=太郎」なことは自明だが、Javascriptのインタープリタは「僕=次郎」と解釈してしまうこと。そのあいまいさを避けるためには、
「三郎に会ったら『太郎が「僕に電話して」って言っていたよ』って伝えといて」
と言う必要がある。
かえって混乱しちゃうかな?
IT関係者ですが、
「省略して表現しても通じてしまう日本語ゆえの問題」だと思います。
>太郎「僕はPerlが好き」 // この「僕」は、
>次郎「僕はやっぱりPHPだよ」 // この「僕」とも違うし
>太郎「三郎だったら『僕は絶対Ruby』と言うに決まってるよ」 // この「僕」とも違う
勝手に言葉を足してみると、
太郎「僕はPerlが好き」 (そのまま)
次郎「僕はやっぱりPHP(が好き)だよ」
太郎「(僕が思うに、)三郎だったら『僕は絶対Ruby(が好き)』と言うに決まってるよ」
となって、1番目と2番目は「誰が何を好きという属性」を主観で述べている(事実)のに対し、3番目は「誰が何を好きという属性」を他人が述べている(事実ではない)。
と解釈すると、1番目と2番目の"僕"は同じだと思えるし、違う理由がわかりません。
Posted by: oyo | 2007.11.10 at 18:00
To:oyo
この話は、"僕"という言葉が何を指してるのかを表しているのであって、事実かどうかは関係ないと思いますよ。
>太郎「僕はPerlが好き」 // この「僕」は、
>次郎「僕はやっぱりPHPだよ」 // この「僕」とも違うし
>太郎「三郎だったら『僕は絶対Ruby』と言うに決まってるよ」 // この「僕」とも違う
この場合、1番目の"僕"は太郎の事を指しているのに対して、
2番目の"僕"は次郎を、3番目の"僕"は三郎を指してるので、
両方とも1番目の"僕"とは違います。
Posted by: て | 2007.11.11 at 07:06