Object.prototype.valueOf()
Сводка
Метод 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]
Спецификации
Specification |
---|
ECMAScript Language Specification # sec-object.prototype.valueof |
Совместимость с браузерами
BCD tables only load in the browser