Javascript类仅显示其中一个对象

时间:2018-01-02 19:10:17

标签: javascript class object

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

HTML

    var Validator = function (options) {
        console.log(options);
    };
    var register_username = document.getElementById("register_username");
    var register_password = document.getElementById("register_password");

    document.getElementById("register_submit").addEventListener("click", function (e) {
        e.preventDefault();
        var register_val = new Validator(
                {
                    element: register_username,
                    type: "str",
                    min: 1,
                    max: 20
                },
                {
                    element: register_password,
                    type: "str",
                    min: 4,
                    max: 20
                }
        );

    }, false);

的Javascript

element: <input id="register_username" class="register_username" placeholder="Username" name="register_username" autocomplete="off" type="text">
max: 20
min: 1
type: "str"

控制台日志

targetsdkversion

2 个答案:

答案 0 :(得分:1)

您可以使用arguments对象访问所有传入的参数到函数。它是一个数组 like 对象,它包含用于调用函数的所有参数信息。它是一个javascript关键字。

来自MDN

  

arguments对象是一个可用的局部变量   (非箭头)功能。您可以在其中引用函数的参数   使用arguments对象的函数。该对象包含一个   传递给函数的每个参数的条目,即第一个条目   指数从0开始。

 var Validator = function (options) {
        console.log(arguments);
    };
    var register_username = document.getElementById("register_username");
    var register_password = document.getElementById("register_password");

    document.getElementById("register_submit").addEventListener("click", function (e) {
        e.preventDefault();
        var register_val = new Validator(
                {
                    element: register_username,
                    type: "str",
                    min: 1,
                    max: 20
                },
                {
                    element: register_password,
                    type: "str",
                    min: 4,
                    max: 20
                }
        );

    }, false);
<form>
<input type="text" id="register_username">
<input type="password" id="register_password">
<input type="button" id="register_submit" value="click">

</form>


   

答案 1 :(得分:0)

您似乎要么传递一个选项数组,要么在构造函数中接受多个选项。

选项数组:

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关键字来获取传递给构造函数的所有参数的数组。 / p>