В JavaScript объекты можно преобразовать в примитивные значения с помощью неявного или явного преобразования.
Неявное преобразование происходит, когда объект используется в контексте, ожидающем примитивное значение:
let obj = {
valueOf: function() {
return 42;
},
toString: function() {
return 'object';
}
};
console.log(obj + 1); // 43
console.log(String(obj)); // object
В приведенном примере объект obj
определяет методы valueOf
и toString
. При неявном преобразовании obj + 1
, JavaScript вызывает метод valueOf
объекта obj
, чтобы получить его примитивное значение. Если метод valueOf
не возвращает примитив, вызывается метод toString
. Аналогично, когда объект передается в функцию String()
, JavaScript также вызывает метод toString
.
Если методы valueOf
и toString
не определены, происходит преобразование объекта в строку [object Object]
.
Явное преобразование может быть выполнено с помощью функций Number()
, String()
и Boolean()
:
let obj = {
valueOf: function() {
return 42;
}
};
console.log(Number(obj)); // 42
console.log(String(obj)); // [object Object]
console.log(Boolean(obj)); // true
В данном случае преобразование выполняется с помощью соответствующих функций и вызова соответствующих методов объекта.