ボクココ

個人開発に関するテックブログ

前回の勉強会の補足

前回の勉強会にて頂いた質問で曖昧に返答してしまった箇所があったので、ここでしっかりと説明します。
質問は「連想配列の文字列キーに空白が入った場合はどうなのか」ということでした。これについて検証してみました。
まず空白の無いコード


var arr={'age': '22',
'printName': function(name){
document.writeln(name);
}
};

arr['printName']('Homma'); // Homma
arr.printName('Homma'); // Homma

要素にアクセスするには二つの書き方が可能だけども、.(ドット)を使った書き方が一般的と言いました。
それでは検証した空白ありのコード

var arr={'age': '22',
'print Name': function(name){
document.writeln(name);
}
};

arr['print Name']('Homma'); // Homma
arr.print Name('Homma'); // missing ; before statement

となり、連想配列の文字列キーとして実行した場合は上手くいきました。まぁ予想通りと言えば予想通りで・・。


ここで前回の説明に一言加えておくと、この作成したarrオブジェクト、実はこれはObjectオブジェクトにプロパティ・メソッドを追加したものです。だから、これを連想配列というのも正直それでいいのかなぁという感じで、実際は完全にオブジェクトなんです。
Objectオブジェクトとは、全てのオブジェクトの基本で、どれもこのObjectオブジェクトを継承(っぽいことを)しています。 その証拠として、Objectオブジェクトには例えばtoString()というメソッドが予め定義されていますので、これを先ほどのarrで使ってみましょう。

document.write(arr.toString()); //[object Object]
arrがただの連想配列であったら、「メソッドが見つからない」というように言われるはずです。しかし! 今回はobject Object という文字列が返されました。このobect Objectとは何かっていうのはこのarrを文字列に変換した結果です。
Objectオブジェクトは全てのオブジェクトの元となるオブジェクト。そしてその正体は連想配列である、ということを知っておくと良いかもしれません。