可以在JavaScript中访问Arguments“class”吗?

时间:2013-03-27 21:02:19

标签: javascript

所有其他内置函数都附加到全局对象:

> Object.prototype.toString.call(new Date)
'[object Date]'
> new Date instanceof Date
true
> Object.prototype.toString.call(new Function)
'[object Function]'
> new Function instanceof Function
true
> Object.prototype.toString.call(new Number)
'[object Number]'
> new Number instanceof Number
true
然而,

Arguments不是:

> args = null; (function() { args = arguments }()); Object.prototype.toString.call(args)
'[object Arguments]'
> new Arguments instanceof Arguments
ReferenceError: Arguments is not defined

有没有办法访问它?

1 个答案:

答案 0 :(得分:2)

如果您的意思是想要手动创建Arguments的实例,那么这是不可能的。没有Arguments构造函数。

该类型的对象实际上是由内部算法创建的(参见ECMAScript规范的section 10.6)。您看到的Object.prototype.toString.call输出只是存储在对象的[[Class]]内部属性中的值。它可能是任何东西。在这种情况下,规范定义它应该设置为字符串“Arguments”。