- 作者: 稲田弘樹,佐藤正明,大酒桜子,春日部早紀,伊藤直也,舘野祐一,羽生章洋,木村聡,飯田哲男,安藤祐介,今田智仁,水口淳,沖林正紀,福井恵美,大島康靖,小山哲志,こうたろう,黒枝真,西澤晋,土方千代子,齋藤学,吉田聡,後藤大地,多田佐々紗,守屋利之,石井達夫,尾島良司,猪股健太郎,WEB+DB PRESS編集部
- 出版社/メーカー: 技術評論社
- 発売日: 2006/03/24
- メディア: 単行本
- 購入: 1人 クリック: 11回
- この商品を含むブログ (26件) を見る
id:naoyaさんの記事を読んで気になることがあった。上記雑誌の「Ajax&JavaScriptフレームワーク活用術」の第2章から少し引用して
var obj = new Object();
このオブジェクトは空のオブジェクト、何のプロパティもメソッドも持っていません.
という箇所だけど、空だっけと思った。JavaScriptはJavaとは全く別言語だけど、文法面は参考にされたようで、Objectクラスも似ている印象。
例えば、
var obj = new Object(); alert( obj.toString );
というコードを実行すると
function toString() { [native code] }
と表示されるので、toStringはありそう。因みに
var obj = new Object(); alert( obj.toString() );
とメソッド実行の戻り値を見ると
[object Object]
と表示される。
var obj = new Object(); alert( obj.aaa );
というように未定義なプロパティーを呼び出すと「undefined」と表示されるので、違いはあるように思う。
ただ、挙動から推測すると、ObjectクラスのtoStringには実装がないような気がする。イメージとしては
function Object() { this.toString = function(){} }
という感じ。
toString以外にもvalueOfとか何個か同じようなものがあり、空というのは言い過ぎではないかと感じた。けれど、何も実装されていないのなら、取り立てて問題にする必要は無いかもしれない。ひょっとすると読者が複雑に感じないように、敢えてそういう表現を使ったのかもしれない。id:naoyaさんは、本当のところどう思っているのだろう。