以下のコードで何が起こっているのか誰か説明できますか? toString が foo と bar の両方で呼び出されるか、どちらも呼び出されないことを期待します。リテラル オブジェクト表記法は、作成後にオブジェクトにフィールドを追加することとどう違うのですか?
function Obj(v) {
this.v = v;
};
Obj.prototype.toString= function() {
window.alert("to string called for " +
this.v);
return this.v.toString();
}
var foo = new Obj('foo');
var bar = new Obj('bar');
// toString is not called here.
var map = {foo : 'blah'};
// toString is called here.
map[bar] = "blah2";
既存のオブジェクトへの追加ではtoString()を使用するのに、オブジェクトリテラルではtoString()を使用しないのはなぜですか?