Преобразование объектов в простые значения

Бывают операции, при которых объект должен быть преобразован в примитив.

Например:

  • Строковое преобразование – если объект выводится черезalert(obj).
  • Численное преобразование – при арифметических операциях, сравнении с примитивом.
  • Логическое преобразование – при if(obj)и других логических операциях.

Массивы наследуют по умолчанию метод valueOf(), который возвращает сам объект, а не простое значение, поэтому при преобразовании массива в число интерпретатор опирается на метод toString(). Пустые массивы преобразуются в пустую строку. А пустая строка преобразуется в число 0. Массив с единственным элементом преобразуется в ту же строку, что и единственный элемент массива. Если массив содержит единственное число, это число преобразуется в строку, а затем опять в число. Оператор +в языке JavaScript выполняет сложение чисел и конкатенацию строк. Если какой-либо из его операндов является объектом, JavaScript преобразует объект, используя специальное преобразование объекта в простое значение вме- сто преобразования объекта в число, используемого другими арифметическими операторами. То же относится и к оператору равенства ==. Если выполняется сравнение объекта с простым значением, оператор выполнит преобразование объекта с использованием правил преобразования в простое значение. Преобразование объектов в простые значения, используемое операторами + и ==, предусматривает особый подход для объектов Date. Класс Date является единственным типом данных в базовом JavaScript, который определяет осмысленные преобразования и в строку, и в число. Преобразование любого объекта, не являющегося датой, в простое значение основано на преобразовании в число (когда первым применяется метод valueOf()), тогда как для объектов типа Date используется преобразование в строку (первым применяется метод toString()). Однако преобразование выполняется не совсем так, как было описано выше: простое значение, возвращаемое методом valueOf() или toString(), используется непосредственно, без дополнительного преобразования в число или в строку. Оператор -, например, преобразует свои операнды в числа. Следующий фрагмент демонстрирует поведение операторов +, -, == и > при работе с объектами Date:

var now = new Date(); // Соз­дать объ­ект Date

typeof (now + 1) // => "стро­ка": + пре­об­ра­зу­ет да­ту в стро­ку
typeof (now - 1) // => "чис­ло": - вы­пол­нит пре­об­ра­зо­ва­ние объ­ек­та в чис­ло
now == now.toString() // => true: не­яв­ное и яв­ное пре­об­ра­зо­ва­ние в стро­ку
now > (now -1) // => true: > пре­об­ра­зу­ет объ­ект Date в чис­ло

results matching ""

    No results matching ""