Objectは空ではないような

Web+DB press (Vol.31)

Web+DB press (Vol.31)

id:naoyaさんの記事を読んで気になることがあった。上記雑誌の「Ajax&JavaScriptフレームワーク活用術」の第2章から少し引用して

var obj = new Object();
このオブジェクトは空のオブジェクト、何のプロパティもメソッドも持っていません.

という箇所だけど、空だっけと思った。JavaScriptJavaとは全く別言語だけど、文法面は参考にされたようで、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さんは、本当のところどう思っているのだろう。

コメントする

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