Javascript var Object=新对象();
为什么可以使用“Object”作为有效的变量名?Javascript var Object=新对象();,javascript,syntax,Javascript,Syntax,为什么可以使用“Object”作为有效的变量名?newobject()将像{}一样返回一个对象。所以是的,typeof new Object()=“Object”。构造函数(与任何构造函数一样)是一个函数,因此typeof Object==“function” 但是,如果用对象替换构造函数,则typeof object===“object”,因为object已成为类似{}的对象。这与typeof{}==“object”的逻辑相同 您在这里所做的是 使用对象类构造函数,您已将对象声明为新变量。 当
newobject()
将像{}
一样返回一个对象。所以是的,typeof new Object()=“Object”
。构造函数(与任何构造函数一样)是一个函数,因此typeof Object==“function”
但是,如果用对象替换构造函数,则typeof object===“object”
,因为object
已成为类似{}
的对象。这与typeof{}==“object”
的逻辑相同
您在这里所做的是 使用对象类构造函数,您已将对象声明为新变量。 当您使用Object()时,它将引用在命名对象之前声明的对象 “为什么“对象”不是特定的关键字?” 因为规范中没有这样定义 这些是JavaScript中的:
>> typeof Object
"function"
>> var Object = new Object();
>> typeof Object
"object"
>> var a = new Object()
TypeError: Object is not a constructor
您的代码是否有效取决于两个因素:
- 在作用域中重新声明的名称“隐藏”与在外部作用域中声明的名称相同的实体。这意味着您的局部变量
可能会隐藏其他地方存在的函数Object
Object
SyntaxError:assignment to keyword
?”(就像你在Python3中得到的类似True=False
——你可以在Python2中这样做)为什么你想结束这个问题?想评论一下吗?@JohnJohnGa:你可以把问题说得更清楚。var a={};(a)的类型=‘对象’代码>aa所以“重载”函数“Object”@rabudde没有问题:我不是这么说的;事实上这样做肯定是不好的做法。但从技术上讲,这是可能的,因为它不会引起任何错误。他知道这一点。他想知道为什么这是可能的,因为他的直觉假设是标记对象
不能在此上下文中重复使用。@TomalakGeret'kal正是如此。谢谢
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