Symbol.toPrimitive
by fredericklim
HTML
<p id='o1'></p>
<p id='o2'></p>
<p id='o3'></p>
JavaScript
let user = {
name: "John",
money: 1000,
//[Symbol.toPrimitive]: function(hint) {
[Symbol.toPrimitive](hint) {
console.log(`hint: ${hint}`);
return hint == "string" ? `{name: "${this.name}"}` : this.money;
}
/* toString() {
return this.name;
},
valueOf() {
return this.money;
} */
};
// conversions demo:
document.querySelector("#o1").innerHTML = user; // hint: string -> {name: "John"}
document.querySelector("#o2").innerHTML = +user; // hint: number -> 1000
document.querySelector("#o3").innerHTML = user + 500; // hint: default -> 1500