Cette page a été traduite à partir de l'anglais par la communauté.Vous pouvez contribuer en rejoignant la communauté francophone sur MDN Web Docs.
Symbol.toPrimitive
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 avril 2017.
Le symbole « connu »Symbol.toPrimitive définit une fonction qui est appelée pour convertir un objet en une valeur primitive.
Dans cet article
Exemple interactif
const object1 = { [Symbol.toPrimitive](hint) { if (hint === "number") { return 42; } return null; },};console.log(+object1);// Expected output: 42Description
Lorsqu'on convertit un objet en une valeur primitive et que l'objet possède une propriétéSymbol.toPrimitive dont la valeur est une fonction, la fonction est appelée avec une chaîne de caractère (hint) qui définit le type qu'on privilégie pour la valeur primitive. L'argumenthint peut prendre l'une des valeurs suivantes :"number","string" ou"default".
Attributs deSymbol.toPrimitive | |
|---|---|
| Écrivable | Non |
| Énumérable | Non |
| Configurable | Non |
Exemples
Dans l'exemple qui suit, on voit comment la propriétéSymbol.toPrimitive peut modifier la valeur primitive obtenue lors de la conversion d'un objet.
// Premier cas avec un objet sans Symbol.toPrimitive.let obj1 = {};console.log(+obj1); // NaNconsole.log(`${obj1}`); // "[object Object]"console.log(obj1 + ""); // "[object Object]"// Second cas : l'objet a une propriété Symbol.toPrimitivevar obj2 = { [Symbol.toPrimitive](hint) { if (hint === "number") { return 10; } if (hint === "string") { return "coucou"; } return true; },};console.log(+obj2); // 10 -- hint vaut "number"console.log(`${obj2}`); // "coucou" -- hint vaut "string"console.log(obj2 + ""); // true -- hint vaut "default"Spécifications
| Specification |
|---|
| ECMAScript® 2026 Language Specification> # sec-symbol.toprimitive> |