var Object = new Object();

时间:2011-09-20 11:44:55

标签: javascript syntax

>> typeof Object
"function"   

>> var Object = new Object();

>> typeof Object
"object"

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

为什么可以将“Object”用作有效的变量名?

5 个答案:

答案 0 :(得分:2)

new Object()将像{}一样返回一个对象。是的,typeof new Object() === "object"。构造函数(作为任何构造函数)是一个函数,所以typeof Object === "function"

但是,如果用对象替换构造函数,那么typeof Object === "object" Object已成为{}之类的对象。它与typeof {} === "object"的逻辑相同。

Object is not a keyword at all.

答案 1 :(得分:2)

这些是JavaScript中的reserved words

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 :(得分:1)

  

“为什么”对象“不是特定的关键字?”

因为规范中没有这样定义。

ECMAScript 7.6.1 Reserved Words

答案 3 :(得分:1)

您的代码有效受两个因素控制:

  • Object is not a "reserved word"

  • 在范围内重新声明的名称“隐藏”在外部范围内声明的同名实体。这意味着您的本地变量Object可能会隐藏其他地方存在的函数Object

答案 4 :(得分:0)

你在这里做的是 使用Object类构造函数已将Object声明为新变量。 当你使用Object()时,它将引用在命名为Object之前声明的对象。