--- title: Object.prototype.valueOf() slug: Web/JavaScript/Reference/Global_Objects/Object/valueOf tags: - JavaScript - Method - Object - Prototype translation_of: Web/JavaScript/Reference/Global_Objects/Object/valueOf ---
Метод valueOf() возвращает примитивное значение указанного объекта.
object.valueOf()
JavaScript вызывает метод valueOf для преобразования объекта в примитивное значение. Вам редко потребуется вызывать метод valueOf самостоятельно; JavaScript автоматически вызывает его при обнаружении объекта, когда ожидается примитивное значение.
По умолчанию, метод valueOf наследуется каждым объектом, произошедшим от {{jsxref("Global_Objects/Object", "Object")}}. Каждый встроенный объект ядра переопределяет этот метод, возвращая подходящее значение. Если объект не имеет примитивного значения, valueOf возвращает сам объект, который отображается как:
[object Object]
Вы можете использовать valueOf в своём коде для преобразования встроенных объектов в примитивное значение. Когда вы создаёте пользовательский объект, вы можете переопределить метод Object.prototype.valueOf(), чтобы вызывать собственный метод вместо метода по умолчанию из {{jsxref("Global_Objects/Object", "Object")}}.
valueOf в пользовательских объектахВы можете создать функцию, вызываемую вместо метода valueOf по умолчанию. Ваша функция не должна принимать аргументов.
Предположим, у вас есть объект типа myNumberType и вы хотите создать для него метод valueOf. Следующий код присваивает определённую пользователем функцию методу valueOf объекта:
myNumberType.prototype.valueOf = function() { return customPrimitiveValue; };
Начиная с этого места в вашем коде, в любое время, когда объект типа myNumberType будет использоваться в контексте, где он должен быть представлен примитивным значением, JavaScript будет автоматически вызывать функцию, определённую в этом коде.
Метод объекта valueOf обычно вызывается движком JavaScript, но вы можете вызвать его и самостоятельно, как показано ниже:
myNumber.valueOf()
Примечание: объекты в строковом контексте преобразуются с помощью метода {{jsxref("Object.toString", "toString()")}}, что отличается от объектов {{jsxref("Global_Objects/String", "String")}}, преобразующихся в строковые примитивы методом valueOf. Все объекты имеют преобразование в строку вида "[object type]". Но многие объекты не преобразуются в число, логическое значение или функцию.
valueOfvar o = new Object(); myVar = o.valueOf(); // [object Object]
{{Compat}}