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