有人可以解释下面的代码中发生了什么吗?我希望 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()?