Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/447.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript类仅显示其中一个对象_Javascript_Class_Object - Fatal编程技术网

Javascript类仅显示其中一个对象

Javascript类仅显示其中一个对象,javascript,class,object,Javascript,Class,Object,我正在尝试控制台记录“options”参数,但出于某种原因,它只显示第一个对象?我怎样才能让控制台记录“新验证器”中的所有对象 HTML 控制台日志 element: <input id="register_username" class="register_username" placeholder="Username" name="register_username" autocomplete="off" type="text"> max: 20 min: 1 type: "st

我正在尝试控制台记录“options”参数,但出于某种原因,它只显示第一个对象?我怎样才能让控制台记录“新验证器”中的所有对象

HTML

控制台日志

element: <input id="register_username" class="register_username" placeholder="Username" name="register_username" autocomplete="off" type="text">
max: 20
min: 1
type: "str"
元素:
最高:20
min:1
类型:“str”

您可以使用
参数
对象访问传递给函数的所有参数。它是一个类似数组的对象,它拥有用于调用函数的所有参数信息

arguments对象是一个局部变量,在所有 (非箭头)函数。您可以在中引用函数的参数 通过使用arguments对象创建函数。此对象包含一个 传递给函数的每个参数的 从0开始的索引

var验证程序=函数(选项){
log(参数);
};
var register_username=document.getElementById(“register_username”);
var register_password=document.getElementById(“register_password”);
document.getElementById(“register_submit”).addEventListener(“click”,函数(e){
e、 预防默认值();
var register\u val=新验证程序(
{
元素:注册用户名,
类型:“str”,
民:1,,
最高:20
},
{
元素:注册密码,
类型:“str”,
民:4,,
最高:20
}
);
},假)

看起来您要么要传递一个选项数组,要么要在构造函数中接受多个选项

选项数组:

var register_val = new Validator(
    [
        {
            element: register_username,
            type: "str",
            min: 1,
            max: 20
        },
        {
            element: register_password,
            type: "str",
            min: 4,
            max: 20
        }
    ]
);
具有多个选项的构造函数:

var Validator = function (option1, option2) {
    console.log(option1, option2);
};

如果您想要此多选项版本,但不知道将发送多少个选项,则可能需要使用
arguments
关键字获取传递给构造函数的所有参数的数组。

传递两个参数,但只记录第一个参数。第二个对象作为第二个参数传递,因此,它不是
options
参数的一部分是有意义的,因为其中一个是第一个。这里的其他答案是正确的,请将
console.log(options)
更改为
console.log(arguments)
,然后您将打印所有传递的参数。请问为什么这样做?为什么arguments console.log同时记录这两个对象,我不明白?我没有在任何地方指定“论点”?谢谢,这帮了我很大的忙!我不知道arguments关键字:)
var register_val = new Validator(
    [
        {
            element: register_username,
            type: "str",
            min: 1,
            max: 20
        },
        {
            element: register_password,
            type: "str",
            min: 4,
            max: 20
        }
    ]
);
var Validator = function (option1, option2) {
    console.log(option1, option2);
};