var Object = new Object (); - PullRequest
       1

var Object = new Object ();

4 голосов
/ 20 сентября 2011
>> typeof Object
"function"   

>> var Object = new Object();

>> typeof Object
"object"

>> var a = new Object()
TypeError: Object is not a constructor

Почему можно использовать «Объект» в качестве допустимого имени переменной?

Ответы [ 5 ]

2 голосов
/ 20 сентября 2011

Это зарезервированные слова в JavaScript:

break
case
catch
continue
debugger
default
delete
do
else
finally
for
function
if
in
instanceof
new
return
switch
this
throw
try
typeof
var
void
while
with
2 голосов
/ 20 сентября 2011

new Object() вернет объект, как {}. Так что да, typeof new Object() === "object". Конструктор является (как и любой конструктор) функцией, поэтому typeof Object === "function".

Однако, если вы замените конструктор объектом, то typeof Object === "object", поскольку Object стал объектом, подобным {}. Это та же логика, что и typeof {} === "object".

Object вообще не является ключевым словом.

1 голос
/ 20 сентября 2011

То, что ваш код действителен, зависит от двух факторов:

  • Object не является «зарезервированным словом» .

  • Имена, повторно объявленные в области видимости, скрывают сущности с тем же именем, которые были объявлены во внешней области видимости.Это означает, что ваша локальная переменная Object может скрыть функцию Object, существующую в другом месте.

1 голос
/ 20 сентября 2011

"Почему" Объект "не является определенным ключевым словом?"

Поскольку это не определено как таковое в спецификации.

ECMAScript 7.6.1 Зарезервированные слова

0 голосов
/ 20 сентября 2011

То, что вы сделали здесь, используя конструктор класса Object, вы объявили Object как новую переменную. И когда вы используете Object (), он будет ссылаться на объект, объявленный ранее с именем Object.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...