Warum ruft das Boolesche Primitiv den Prototyp nicht toString () auf?
Sag ich habe diesen Code:
Boolean.prototype.toString = function toString() {
return this.valueOf() ? '1' : '0';
};
var object = {
true: 'true',
false: 'false',
1: '1',
0: '0'
};
// "true" - this doesn't work
console.log('primitive', object[true]);
// "1" - but these do
console.log('primitive.toString()', object[true.toString()]);
console.log('instance', object[new Boolean(true)]);
Warum benutzt das Primitive nicht das @ der KlasstoString
definition? Objektschlüssel sind entweder Zeichenfolgen oder Symbole. Sie können nicht nur rohe Boolesche Werte sein. Deshalb bin ich verwirrt.