>> typeof Object
"function"
>> var Object = new Object();
>> typeof Object
"object"
>> var a = new Object()
TypeError: Object is not a constructor
为什么可以将“Object”用作有效的变量名?
答案 0 :(得分:2)
new Object()
将像{}
一样返回一个对象。是的,typeof new Object() === "object"
。构造函数(作为任何构造函数)是一个函数,所以typeof Object === "function"
。
但是,如果用对象替换构造函数,那么typeof Object === "object"
Object
已成为{}
之类的对象。它与typeof {} === "object"
的逻辑相同。
答案 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)
答案 3 :(得分:1)
您的代码有效受两个因素控制:
在范围内重新声明的名称“隐藏”在外部范围内声明的同名实体。这意味着您的本地变量Object
可能会隐藏其他地方存在的函数Object
。
答案 4 :(得分:0)
你在这里做的是 使用Object类构造函数已将Object声明为新变量。 当你使用Object()时,它将引用在命名为Object之前声明的对象。