JavaScript метод Object.valueOf()

JavaScript Object

Определение и применение

JavaScript метод Object.valueOf() возвращает примитивное значение указанного объекта, он вызывается без аргументов.

По умолчанию, метод valueOf() наследуется каждым объектом, произошедшим от объекта Object, он автоматически вызывается когда встречается объект там, где ожидается элементарное значение.

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

Поддержка браузерами

МетодChrome
Chrome
Firefox
Firefox
Opera
Opera
Safari
Safari
Internet Explorer
IExplorer
Microsoft Edge
Edge
valueOf()ДаДаДаДаДаДа

JavaScript синтаксис:

obj.valueOf();

Версия JavaScript

ECMAScript 1 (реализовано в JavaScript 1.1)

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

let obj = {  // инициализируем переменную, содержащую объект
    a: 1,
    b: 2,
    c: () => (this.a + this.b)
};

obj.valueOf(); // {a: 1, b: 2, c: () => (this.a + this.b)}

В этом примере мы инициализировали переменную, содержащую объект и с помощью метода valueOf() мы возвращаем примитивное значение указанного объекта.

В следующем примере мы с Вами рассмотрим как переопределить метод valueOf() по умолчанию:

// создадим функцию конструктор
function Calc( a, b ) {
  this.a = a;
  this.b = b;
}

// создаем объект типа Calc и инициализируем им переменную
let first = new Calc( 5, 15 );

first.valueOf();  // {a: 5, b: 15}

// переопределяем метод valueOf() по умолчанию
Calc.prototype.valueOf = function() {
    return this.a + this.b;
};

first.valueOf();  // 20

// создаем объект типа Person и инициализируем им переменную
let second = new Calc( 2, 3 );

second.valueOf();  // 5

В этом примере мы создали функцию конструктор Calc и создали объект типа Calc, которым инициализировали переменную. После этого мы вызываем метод valueOf() на пользовательском объекте и в качестве возвращемого значения по умолчанию (унаследованное от Object) получаем примитивное значение указанного объекта (сам объект).

После этого мы переопределяем метод valueOf() по умолчанию, который возвращает, сумму значений свойств a и b объекта и вызываем метод valueOf() снова. Обратите внимание, что в этот раз мы получаем более полезную информацию. Далее мы создаем еще один объект типа Calc и так же используем метод valueOf().

JavaScript Object