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

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

Специфікація Статус Коментар
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 Latest Draft (ECMA-262)
The definition of 'Object.prototype.valueOf' in that specification.
Draft

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

Update compatibility data on GitHub
DesktopMobileServer
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome for AndroidFirefox for AndroidOpera for AndroidSafari on iOSSamsung InternetNode.js
valueOfChrome Full support YesEdge Full support 12Firefox Full support 1IE Full support 4Opera Full support YesSafari Full support YesWebView Android Full support YesChrome Android Full support YesFirefox Android Full support 4Opera Android Full support YesSafari iOS Full support YesSamsung Internet Android Full support Yesnodejs Full support Yes

Legend

Full support  
Full support

Див. також