JavaScript метод Object.valueOf()
JavaScript ObjectОпределение и применение
JavaScript метод Object.valueOf() возвращает примитивное значение указанного объекта, он вызывается без аргументов.
По умолчанию, метод valueOf() наследуется каждым объектом, произошедшим от объекта Object, он автоматически вызывается когда встречается объект там, где ожидается элементарное значение.
Как правило, метод valueOf() не вызываются явно, а переопределяется в пользовательских объектах, если этот метод не переопределён в пользовательском объекте, то метод valueOf() возвращает сам объект. Для объектов типа Object элементарное значение отсутствует, и метод такого объекта возвращает сам объект.
Поддержка браузерами
Метод | Chrome | Firefox | Opera | Safari | IExplorer | 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