所有其他内置函数都附加到全局对象:
> 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
有没有办法访问它?
答案 0 :(得分:2)
如果您的意思是想要手动创建Arguments
的实例,那么这是不可能的。没有Arguments
构造函数。
该类型的对象实际上是由内部算法创建的(参见ECMAScript规范的section 10.6)。您看到的Object.prototype.toString.call
输出只是存储在对象的[[Class]]
内部属性中的值。它可能是任何东西。在这种情况下,规范定义它应该设置为字符串“Arguments”。