Symbol.toPrimitive

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

Опис

За допомогою властивості Symbol.toPrimitive (що використовується в якості функції) об'єкт може перетворюватись на прості значення. Функція викликається з рядковим аргументом hint, який вказує бажаний тип отриманого примітиву. Аргумент hint може мати значення "number", "string" або "default".

Атрибути поля Symbol.toPrimitive
Доступний для запису ні
Доступний для переліку ні
Доступний для налаштування ні

Приклади

Модифікація простих значень, отриманих перетворенням об'єкта

Наступний приклад описує, як властивість Symbol.toPrimitive може змінювати прості значення, отримані з об'єкта.

// Об'єкт без властивості Symbol.toPrimitive.
var obj1 = {};
console.log(+obj1);     // NaN
console.log(`${obj1}`); // "[object Object]"
console.log(obj1 + ''); // "[object Object]"

// Об'єкт з властивістю Symbol.toPrimitive.
var obj2 = {
  [Symbol.toPrimitive](hint) {
    if (hint == 'number') {
      return 10;
    }
    if (hint == 'string') {
      return 'привіт';
    }
    return true;
  }
};
console.log(+obj2);     // 10        -- hint дорівнює "number"
console.log(`${obj2}`); // "привіт"  -- hint дорівнює "string"
console.log(obj2 + ''); // "true"    -- hint дорівнює "default"

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

Специфікація
ECMAScript (ECMA-262)
The definition of 'Symbol.toPrimitive' in that specification.

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

Update compatibility data on GitHub
DesktopMobileServer
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome for AndroidFirefox for AndroidOpera for AndroidSafari on iOSSamsung InternetNode.js
toPrimitiveChrome Full support 47Edge Full support 15Firefox Full support 44IE No support NoOpera Full support 34Safari Full support 10WebView Android Full support 47Chrome Android Full support 47Firefox Android Full support 44Opera Android Full support 34Safari iOS Full support 10Samsung Internet Android Full support 5.0nodejs Full support 6.0.0

Legend

Full support  
Full support
No support  
No support

Див. також