L'absence de paupière est incorrecte, vous avez simplement can't reassign the prototypes of intrinsic types comme objet, nombre, etc. Vous pouvez seulement ajouter de nouvelles propriétés.
> Number.prototype
-> Number
> Number.prototype = {} // Reassignment fails
-> Object
> Number.prototype
-> Number
> Number.prototype.objSayHello = 'hi' // Appending succeeds
-> 'hi'
> n = new Number(); n.objSayHello
-> 'hi'
Si vous utilisez vos propres objets, vous pouvez mettre à jour ou réattribuer le prototype (note: réaffectant le prototype n'affectera de nouveaux objets, et non ceux qui existent déjà).
Ne modifiez pas les prototypes intrisèques! Ceci est une 'mauvaise chose' car elle peut causer des effets secondaires difficiles à trouver. Si vous avez besoin d'un type de base avec de nouvelles propriétés, puis créer un nouvel objet avec le prototype pointant vers l'objet de base:
NewObject = function() {};
NewObject.prototype = Object.prototype;
NewObject.prototype.value = 123;
Maintenant vous avez un constructeur qui crée de nouveaux objets qui héritent des propriétés de son propre prototype (par exemple 'value') ainsi que le prototype Object ('toString', 'hasOwnProperty' ...).