Javascript 实例的参数变量是什么?
MDN说它是“”,但没有说它是什么实例 它不是Javascript 实例的参数变量是什么?,javascript,arguments,Javascript,Arguments,MDN说它是“”,但没有说它是什么实例 它不是HTMLCollection或NodeList 如果我调用Object.prototype.toString.call(arguments)它将返回“[Object arguments]”,但是arguments instanceof arguments是一个错误 那么,参数是什么呢 那么什么是参数的实例呢 它是对象的一个实例。似乎没有任何公共的参数构造函数,您可以使用instanceof来识别它 如果要对其进行唯一标识,则: Object.prot
HTMLCollection
或NodeList
如果我调用Object.prototype.toString.call(arguments)
它将返回“[Object arguments]”
,但是arguments instanceof arguments
是一个错误
那么,参数
是什么呢
那么什么是参数的实例呢
它是对象的一个实例。似乎没有任何公共的参数
构造函数,您可以使用instanceof
来识别它
如果要对其进行唯一标识,则:
Object.prototype.toString.call(arguments) === "[object Arguments]"
这是一种安全的识别方法
根据,参数
对象可以是普通对象,也可以是外来对象。以下是规格说明:
大多数ECMAScript函数都使参数对象对其对象可用
代码。根据函数定义的特征,
其参数对象是普通对象或参数
外来物体
异国情调的争论
对象是一个特殊对象,其数组索引属性映射到
调用其关联函数的形式参数绑定
ECMAScript函数
外来对象的参数具有相同的内部参数
插槽作为普通对象。它们还有一个[[ParameterMap]]内部
狭槽普通参数对象还具有[[ParameterMap]]内部参数
其值始终未定义的插槽。对于普通参数对象
[[ParameterMap]]内部插槽仅由用户使用
Object.prototype.toString(19.1.3.6)来识别它们
因为它是一个“奇异”的对象,这本质上意味着它没有遵循所有正常和预期的约定。例如,没有可以用来创建自己对象的构造函数。而且,由于没有公共构造函数,这可能也解释了为什么没有instanceof
,您可以对其进行测试以唯一标识它。您可以检索函数名,其中参数
是使用被调用方返回的。name
function test() {
this.args = arguments;
}
var obj = new test();
console.log(obj.args.callee.name);
另请参见,在严格模式下无法执行此操作。@jfriend00 Yes;包含更多详细信息的链接。
function test() {
return arguments
}
console.log(test().callee.name);