Поскольку +obj
требует число, не следует ли использовать прототип valueOf()
для преобразования типов, который возвращает объект.
На самом деле делает вызовите метод valueOf
. Но поскольку, как вы говорите, он возвращает объект, а не примитивное значение, он считается бесполезным. Затем альтернатива называется: toString()
, которая возвращает , возвращает примитивное значение, которое впоследствии приводится к числу.
Вы можете попробовать
const obj1 = {
valueOf() { console.log("valueOf 1"); return this; },
toString() { console.log("toString 1"); return "1"; },
};
console.log(+obj1);
const obj2 = {
valueOf() { console.log("valueOf 2"); return 2; },
toString() { console.log("toString 2"); return "2"; },
};
console.log(+obj2);