Symbol.toPrimitive является символом (symbol), который описывает свойство объекта как функцию, которая вызывается при преобразовании объекта в соответсвующее примитивное значение.

Атрибуты свойстваSymbol.toPrimitive
Записываемое нет
Перечисляемое нет
Настраиваемое нет

Описание

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

Примеры

Описанные ниже примеры показывают как с помощью свойства 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 'hello';
    }
    return true;
  }
};
console.log(+obj2);     // 10        -- желаемый тип (hint) - "number"
console.log(`${obj2}`); // "hello"   -- желаемый тип (hint) - "string"
console.log(obj2 + ''); // "true"    -- желаемый тип (hint) - "default"

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

Specification Status Comment
ECMAScript 2015 (6th Edition, ECMA-262)
Определение 'Symbol.toPrimitive' в этой спецификации.
Стандарт Initial definition.
ECMAScript Latest Draft (ECMA-262)
Определение 'Symbol.toPrimitive' в этой спецификации.
Черновик  

Поддержка браузерами

We're converting our compatibility data into a machine-readable JSON format. This compatibility table still uses the old format, because we haven't yet converted the data it contains. Find out how you can help!

Feature Chrome Edge Firefox (Gecko) Internet Explorer Opera Safari
Basic support 48 (Да) 44 (44) ? ? ?
Feature Android Chrome for Android Edge Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
Basic support ? ? (Да) 44.0 (44) ? ? ?

См. также

Метки документа и участники

Метки: 
Внесли вклад в эту страницу: ifeature, gibson
Обновлялась последний раз: ifeature,