Сводка
Метод valueOf()
возвращает примитивное значение указанного объекта.
Синтаксис
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]
Спецификации
Спецификация | Статус | Комментарии |
---|---|---|
ECMAScript 1-е издание. | Стандарт | Изначальное определение. Реализована в JavaScript 1.1. |
ECMAScript 5.1 (ECMA-262) Определение 'Object.prototype.valueOf' в этой спецификации. |
Стандарт | |
ECMAScript 2015 (6th Edition, ECMA-262) Определение 'Object.prototype.valueOf' в этой спецификации. |
Стандарт |
Совместимость с браузерами
Возможность | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|
Базовая поддержка | (Да) | (Да) | (Да) | (Да) | (Да) |
Возможность | Android | Chrome для Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|
Базовая поддержка | (Да) | (Да) | (Да) | (Да) | (Да) | (Да) |