Cette page a été traduite à partir de l'anglais par la communauté.Vous pouvez contribuer en rejoignant la communauté francophone sur MDN Web Docs.
Object.prototype.valueOf()
Baseline Widely available
Cette fonctionnalité est bien établie et fonctionne sur de nombreux appareils et versions de navigateurs. Elle est disponible sur tous les navigateurs depuis juillet 2015.
La méthodevalueOf() renvoie la valeur primitive d'un objet donné.
Dans cet article
Exemple interactif
function MyNumberType(n) { this.number = n;}MyNumberType.prototype.valueOf = function () { return this.number;};const object1 = new MyNumberType(4);console.log(object1 + 3);// Expected output: 7Syntaxe
object.valueOf();Valeur de retour
La valeur primitive de l'objet appelant.
Description
JavaScript appelle la méthodevalueOf pour convertir un objet en une valeur primitive. Il est rarement nécessaire d'appeler soi-même la méthodevalueOf ; JavaScript l'invoque automatiquement lorsqu'il rencontre un objet alors qu'il attend une valeur primitive.
Par défaut, la méthodevalueOf est héritée par tout objet descendant d'Object. Tous les objets globaux natifs redéfinissent cette méthode pour renvoyer une valeur appropriée. Si un objet n'a pas de valeur primitive,valueOf renvoie l'objet lui-même, ce qui sera affiché comme :
[object Object]valueOf peut être utilisée afin de convertir un objet prédéfini en une valeur primitive. Si un objet est défini dans un script, il est possible de surchargerObject.prototype.valueOf pour appeler une méthode personnalisée au lieu de la méthode par défaut d'Object.
SurchargervalueOf pour des objets personnalisés
Il est possible de créer une fonction à appeler à la place de la méthodevalueOf par défaut. Celle-ci ne peut pas recevoir de paramètres.
Supposons qu'on ait un type d'objetmonTypeDeNombre et qu'on désire lui ajouter une méthodevalueOf spécifique, on pourra utiliser le code suivant :
monTypeDeNombre.prototype.valueOf = function () { return valeurPrimitive;};En utilisant ce code, chaque fois qu'un objet de typemonTypeDeNombre sera utilisé dans un contexte où il doit être représenté comme une valeur primitive, JavaScript appellera automatiquement la fonction qui y est définie.
C'est habituellement JavaScript qui invoquera la méthodevalueOf, mais il est aussi possible de l'appeler soi-même :
monNombre.valueOf();Note :Les objets à utiliser dans un contexte textuel sont convertis avec la méthodetoString() ce qui est différent de la conversion d'objetsString en valeurs primitives avecvalueOf. Tous les objets peuvent être convertis en chaînes de caractères (la façon la plus générique étant "[object type]"). En revanche, la plupart des objets ne peut pas être convertie en nombre ou booléen par exemple.
Exemples
>UtiliservalueOf
function MonTypeDeNombre(n) { this.nombre = n;}MonTypeDeNombre.prototype.valueOf = function () { return this.nombre;};var monObj = new MonTypeDeNombre(4);console.log(monObj + 3); // 7 car l'opération a implicitement utilisé valueOfSpécifications
| Specification |
|---|
| ECMAScript® 2026 Language Specification> # sec-object.prototype.valueof> |