Для чего существуют
valueOf
,
toString
,
Symbol.toPrimitive
, если можно преобразовать объект в желаемый тип данных легче и проще?
Например:
let a = {};
console.log(a); //объект --> string
a = +a; //объект --> number
Неужели обязательно всегда прописывать эти громоздкие конструкции методов объекта и символа
Symbol.toPrimitive
? В чем конкретно их польза?
let user = {
name: "John",
money: 1000,
[Symbol.toPrimitive](hint) {
alert(`hint: ${hint}`);
return hint == "string" ? `{name: "${this.name}"}` : this.money;
}
};
// демонстрация результатов преобразований:
alert(user); // hint: string -> {name: "John"}
alert(+user); // hint: number -> 1000
alert(user + 500); // hint: default -> 1500