В ECMAScript 6 вводится новый символ Symbol.toPrimitive
, который при использовании в качестве ключевого объекта должен определять функцию для возврата примитивное значение объекта:
let object = {
aNumber: 0,
[Symbol.toPrimitive]() {
return this.aNumber;
}
};
object.aNumber = 5;
console.log(object + 2) // 7
Однако существует также функция Object.prototype.valueOf
, которая, в соответствии с документацией, может быть переопределена для преобразования объекта в примитив значение:
let object = {
aNumber: 0,
valueOf() {
return this.aNumber;
}
};
object.aNumber = 5;
console.log(object + 2) // 7
Итак, какой из этих способов преобразования объекта в его примитивное значение следует использовать в ES6 при определении нового объекта?