Является ли null объектом в JavaScript?
Возможный дубликат:
Нулевой объект в javascript
Привет, я прочитал этот поток об ошибке в JavaScript, но я очень смущен об идентичности null
.
Как известно, typeof(null)
оценивает object
из-за ошибки дизайна языка, а ECMA заявляет, что значение null равно The Null Type
.
8.2 The Null Type
The Null type has exactly one value, called null.
Итак, почему люди продолжают говорить, что null
- это объект?
Кто-то сказал, что null - это одноэлементный объект. Это так, как все видят нуль, как и в JavaScript?
Ответы
Ответ 1
Нуль - это отсутствие объекта. Undefined означает, что он еще не назначен, а null означает, что ему присвоено значение.
Null не является одиночным объектом, потому что разыменование его приведет к ошибке; for (var x in null)
даст вам сообщение об ошибке. Вспомните дни указателя; null было значением, которое указатель имел, когда он не указывал на объект.
Ответ 2
Нет, null - один из немногих примитивных типов (другие - числа, строки, булевы и undefined). Все остальное - объект, включая функции, массивы и регулярные выражения. Числа, строки и булевы часто называются "объектноподобными", потому что у них есть методы, но они неизменяемы. Объекты с другой стороны изменяемы.
Ответ 3
null
нельзя рассматривать как объект, поскольку он не может иметь свойств. Это ключевое слово, представляющее примитив, например true
и false
.
> true instanceof Object
false
> null instanceof Object
false