Object.prototype.valueOf()

Сводка

Метод valueOf() возвращает примитивное значение указанного объекта.

Синтаксис

object.valueOf()

Описание

JavaScript вызывает метод valueOf для преобразования объекта в примитивное значение. Вам редко потребуется вызывать метод valueOf самостоятельно; JavaScript автоматически вызывает его при обнаружении объекта, когда ожидается примитивное значение.

По умолчанию, метод valueOf наследуется каждым объектом, произошедшим от Object. ��аждый встроенный объект ядра переопределяет этот метод, возвращая подходящее значение. Если объект не имеет примитивного значения, valueOf возвращает сам объект, который отображается как:

js
[object Object]

Вы можете использовать valueOf в своём коде для преобразования встроенных объектов в примитивное значение. Когда вы создаёте пользовательский объект, вы можете переопределить метод Object.prototype.valueOf(), чтобы вызывать собственный метод вместо метода по умолчанию из Object.

Переопределение valueOf в пользовательских объектах

Вы можете создать функцию, вызываемую вместо метода valueOf по умолчанию. Ваша функция не должна принимать аргументов.

Предположим, у вас есть объект типа myNumberType и вы хотите создать для него метод valueOf. Следующий код присваивает определённую пользователем функцию методу valueOf объекта:

js
myNumberType.prototype.valueOf = function () {
  return customPrimitiveValue;
};

Начиная с этого места в вашем коде, в любое время, когда объект типа myNumberType будет использоваться в контексте, где он должен быть представлен примитивным значением, JavaScript будет автоматически вызывать функцию, определённую в этом коде.

Метод объекта valueOf обычно вызывается движком JavaScript, но вы можете вызвать его и самостоятельно, как показано ниже:

js
myNumber.valueOf();

Примечание: объекты в строковом контексте преобразуются с помощью метода toString(), что отличается от объектов String, преобразующихся в строковые примитивы методом valueOf. Все объекты имеют преобразование в строку вида "[object type]". Но многие объекты не преобразуются в число, логическое значение или функцию.

Примеры

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

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

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

Specification
ECMAScript Language Specification
# sec-object.prototype.valueof

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

BCD tables only load in the browser

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