Augenlidness ist falsch, Sie einfach can't reassign the prototypes of intrinsic types wie Objekt, Nummer, etc. Sie können nur neue Eigenschaften anhängen.
> Number.prototype
-> Number
> Number.prototype = {} // Reassignment fails
-> Object
> Number.prototype
-> Number
> Number.prototype.objSayHello = 'hi' // Appending succeeds
-> 'hi'
> n = new Number(); n.objSayHello
-> 'hi'
Wenn Sie Ihre eigenen Objekte verwenden, dann können Sie den Prototyp (Anmerkung: Neuzuordnung der Prototyp nur neue Objekte betreffen, nicht vorhandene) aktualisieren oder neu zuweisen.
Ändern Sie keine intrinsischen Prototypen! Dies ist eine "schlechte Sache", weil es schwer zu findende Nebenwirkungen verursachen kann. Wenn Sie einen Basistyp mit neuen Eigenschaften benötigen, erstellen Sie dann ein neues Objekt mit dem Prototyp zum Grunde Objekt zeigt:
NewObject = function() {};
NewObject.prototype = Object.prototype;
NewObject.prototype.value = 123;
Jetzt haben Sie ein Konstruktor, die neuen Objekte erstellt werden, die Eigenschaften sowohl von seinem eigenen Prototyp erbt (zB "Wert") sowie der Objekt-Prototyp ('toString', 'hasOwnProperty' ...).