Object.prototype.valueOf()

Метод valueOf() повертає просту величину вказаного об'єкта.

Синтаксис

object.valueOf()

Значення, що повертається

Проста величина вказаного об'єкта.

Опис

JavaScript викликає метод valueOf, щоб перетворити об'єкт на просту величину. Рідко трапляється необхідність викликати його вручну. JavaScript автоматично застосовує valueOf, коли зустрічає об'єкт там, де очікується проста величина.

За замовчуванням, кожен об'єкт, який походить від Object, успадковує метод valueOf. Кожний вбудований об'єкт перезаписує цей метод, щоб повертати відповідне значення. Якщо об'єкт не має простої величини, valueOf повертає сам об'єкт.

Ви можете використовувати valueOf у своєму коді, щоб перетворити вбудований об'єкт на просту величину. Коли ви створюєте користувацький об'єкт, ви можете перезаписати Object.prototype.valueOf(), щоб викликати свій метод замість початкового метода Object.

Перезапис valueOf для користувацьких об'єктів

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

Припустимо, ви маєте об'єкт MyNumberType і бажаєте створити для нього метод valueOf. Наступний код призначає створену користувачем функцію методу valueOf:

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

З наведеним кодом, в будь-який момент, коли об'єкт типу MyNumberType використовується у контексті, де він має бути представлений простою величиною, JavaScript автоматично викличе функцію, визначену у коді.

Зазвичай, JavaScript викликає метод об'єкта valueOf, але ви можете викликати його власноруч, наступним чином:

myNumberType.valueOf()

Заувага: Об'єкти Object у контексті рядка приводяться за допомогою методу toString(), це відрізняє їх від об'єктів String, що перетворюються на рядкові примітиви, використовуючи valueOf. Усі об'єкти мають приведення до рядка виду "[object type]". Але чимало об'єктів не приводяться до числа, булевого значення чи функції.

Приклади

Використання valueOf

function MyNumberType(n) {
    this.number = n;
}

MyNumberType.prototype.valueOf = function() {
    return this.number;
};

var myObj = new MyNumberType(4);
myObj + 3; // 7

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

Сумісність з веб-переглядачами

BCD tables only load in the browser

Див. також