--- 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 ---
{{JSRef("Global_Objects", "Object")}}

Сводка

Метод 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]". Но многие объекты не преобразуются в число, логическое значение или функцию.

Примеры

Пример: использование valueOf

var o = new Object();
myVar = o.valueOf();      // [object Object]

Спецификации

Спецификация Статус Комментарии
ECMAScript 1-е издание. Стандарт Изначальное определение. Реализована в JavaScript 1.1.
{{SpecName('ES5.1', '#sec-15.2.4.4', 'Object.prototype.valueOf')}} {{Spec2('ES5.1')}}  
{{SpecName('ES6', '#sec-object.prototype.valueof', 'Object.prototype.valueOf')}} {{Spec2('ES6')}}  

Совместимость с браузерами

{{CompatibilityTable}}
Возможность Chrome Firefox (Gecko) Internet Explorer Opera Safari
Базовая поддержка {{CompatVersionUnknown}} {{CompatVersionUnknown}} {{CompatVersionUnknown}} {{CompatVersionUnknown}} {{CompatVersionUnknown}}
Возможность Android Chrome для Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
Базовая поддержка {{CompatVersionUnknown}} {{CompatVersionUnknown}} {{CompatVersionUnknown}} {{CompatVersionUnknown}} {{CompatVersionUnknown}} {{CompatVersionUnknown}}

Смотрите также