javascript - 如何在 JavaScript 中引用 Arguments 类?

标签 javascript types constructor instanceof typechecking

简单地说, 在 JavaScript 中,变量 arguments (通过它可以获取当前函数的所有参数)不是 Array 类型,但控制台说它的类型是 Arguments .

您无法通过简单地输入 Arguments 来获得此类(就像你对 String 所做的那样),所以我得到了它的引用,例如:

Arguments = function(){return arguments.constructor;}();

所以我可以像这样输入检查:

function foo() {
    bar = arguments;
}
foo();
bar instanceof Arguments;

有没有办法直接引用Arguments对象?(而不是像前面的代码片段那样生成它?)

Ps.:我正在从事的项目是一个用于调试目的的类型检查系统。您可以为对象变量分配类型,例如 MyClass.fileds = {speed: Number, color: String} ,然后在分配时进行检查。我使用Arguments来解决这个问题。对象,如果只写 {args: Arguments} 就很好了.

最佳答案

没有Arguments类。您拥有的 Arguments 变量只是 Object 构造函数:

function(){return arguments.constructor;}() === Object

每个arguments对象都是一个继承自Object.prototype的普通对象。在草率模式下,其索引属性是命名参数变量的 setter/getter,但除外 its internal [[Class]] value它是一个普通的对象。

如果您对 Arguments 感兴趣,只是为了进行 instanceof 检查,那么您应该看看 How do I check whether an object is an arguments object in JavaScript?问题。

关于javascript - 如何在 JavaScript 中引用 Arguments 类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24642070/

相关文章:

javascript - 如何继承和重写angularjs(java pendent)中的 Controller 方法?

c++ - 构造函数和高级异常抛出 C++

javascript - jQuery Textillate 选项未创建预期结果

javascript - 按钮 onclick 在其位置更改时不会触发

java - 将字符串扫描器转换为类类型

c# - 将 double 转换为没有 Infinity 的 float

types - 将 Uint32 转换为 4 字节数组

C++构造函数/析构函数

super之前的java调用方法

javascript - 获取 xml :id attribute using XML object