Почему (3) .Constructor действителен, пока «конструктор» в (3) недействителен?

StackOverflow https://stackoverflow.com/questions/4097166

Вопрос

(3).constructor номер, но "constructor" in (3) TypeError, почему?

Это было полезно?

Решение

С использованием Документ на недвижимости, номер 3 превращается в объект Количество. Отказ И объект этого типа имеет конструктор и, следовательно, constructor свойство.

Но Как уже указал Чаоспандон, то in оператор требует правильного выражения, чтобы дать объект, но 3 не является объектом, а литералом простого числа.

Другие советы

Спецификация для in Оператор объясняет это. В частности, см. Шаг 5 семантической оценки.

11,8.7 Оператор

Производственное отношение: отношение относительно использования в ShiftExpression оценивается следующим образом:

  1. Пусть LREF является результатом оценки соотношения.
  2. Пусть Lval Be GetValue (LREF).
  3. Пусть rref будет результатом оценки Shiftexpression.
  4. Пусть RVAL будет GetWalue (RREF).
  5. Если тип (RVAL) не объект, бросить Типерр исключение.
  6. Вернуть результат вызова [[hasproperty]] внутреннего метода RVAL с аргументом ToString (LVAL).

Причина (3).constructor Работы - это немного сложнее, чтобы понять, но по сути, когда вы используете точечный оператор по ссылке с примитивной основой, она поднимается в объект.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top