This page was translated from English by the community.Learn more and join the MDN Web Docs community.
Object.prototype.valueOf()
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since июль 2015 г..
Сводка
МетодvalueOf() возвращает примитивное значение указанного объекта.
In this article
Синтаксис
object.valueOf()
Описание
JavaScript вызывает методvalueOf для преобразования объекта в примитивное значение. Вам редко потребуется вызывать методvalueOf самостоятельно; JavaScript автоматически вызывает его при обнаружении объекта, когда ожидается примитивное значение.
По умолчанию, методvalueOf наследуется каждым объектом, произошедшим отObject. Каждый встроенный объект ядра переопределяет этот метод, возвращая подходящее значение. Если объект не имеет примитивного значения,valueOf возвращает сам объект, который отображается как:
[object Object]Вы можете использоватьvalueOf в своём коде для преобразования встроенных объектов в примитивное значение. Когда вы создаёте пользовательский объект, вы можете переопределить методObject.prototype.valueOf(), чтобы вызывать собственный метод вместо метода по умолчанию изObject.
ПереопределениеvalueOf в пользовательских объектах
Вы можете создать функцию, вызываемую вместо методаvalueOf по умолчанию. Ваша функция не должна принимать аргументов.
Предположим, у вас есть объект типаmyNumberType и вы хотите создать для него методvalueOf. Следующий код присваивает определённую пользователем функцию методуvalueOf объекта:
myNumberType.prototype.valueOf = function () { return customPrimitiveValue;};Начиная с этого места в вашем коде, в любое время, когда объект типаmyNumberType будет использоваться в контексте, где он должен быть представлен примитивным значением, JavaScript будет автоматически вызывать функцию, определённую в этом коде.
Метод объектаvalueOf обычно вызывается движком JavaScript, но вы можете вызвать его и самостоятельно, как показано ниже:
myNumber.valueOf();Примечание:Объекты в строковом контексте преобразуются с помощью методаtoString(), что отличается от объектовString, преобразующихся в строковые примитивы методомvalueOf. Все объекты имеют преобразование в строку вида "[object type]". Но многие объекты не преобразуются в число, логическое значение или функцию.
Примеры
>Пример: использованиеvalueOf
var o = new Object();myVar = o.valueOf(); // [object Object]Спецификации
| Specification |
|---|
| ECMAScript® 2026 Language Specification> # sec-object.prototype.valueof> |