valueOf() повертає просту величину вказаного об'єкта.The source for this interactive example is stored in a GitHub repository. If you'd like to contribute to the interactive examples project, please clone https://github.com/mdn/interactive-examples and send us a pull request.
Синтаксис
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
Специфікації
| Специфікація | Статус | Коментар |
|---|---|---|
| ECMAScript 1st Edition (ECMA-262) | Standard | Початкове визначення. Реалізоване у JavaScript 1.1. |
| ECMAScript 5.1 (ECMA-262) The definition of 'Object.prototype.valueOf' in that specification. |
Standard | |
| ECMAScript 2015 (6th Edition, ECMA-262) The definition of 'Object.prototype.valueOf' in that specification. |
Standard | |
| ECMAScript (ECMA-262) The definition of 'Object.prototype.valueOf' in that specification. |
Living Standard |
Сумісність з веб-переглядачами
BCD tables only load in the browser