1

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

> 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

有什么方法可以访问它吗?

4

1 回答 1

2

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

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

于 2013-03-27T21:10:25.033 回答