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.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage