代码之家  ›  专栏  ›  技术社区  ›  ii iml0sto1

Javascript类仅显示其中一个对象

  •  1
  • ii iml0sto1  · 技术社区  · 7 年前

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

    HTML

    <form>
    <input type="text" id="register_username">
    <input type="password" id="register_password">
    </form>
    

    Javascript

        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);
    

    控制台日志

    element: <input id="register_username" class="register_username" placeholder="Username" name="register_username" autocomplete="off" type="text">
    max: 20
    min: 1
    type: "str"
    
    2 回复  |  直到 7 年前
        1
  •  1
  •   Abhinav Galodha    7 年前

    您可以使用 arguments 对象它是一个数组 喜欢 对象,该对象包含用于调用函数的所有参数信息。`这是一个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>
    
    
       
        2
  •  0
  •   tenor528    7 年前

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

    选项阵列:

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