如何在JavaScript中的构造函数中声明变量?

时间:2014-10-14 05:06:53

标签: javascript

function jQueryValidatorWrapper(formId, rules, messages) {
    var validator = $("form:visible[id='" + formId + "']").validate({
                         onchange: false,
                         messages: messages,
                         rules: rules
                     });

    this.validate = function (hideErrors) {
        var showErrorMessage = hideErrors ? false : true;

        // What does 'validator' refer to?
        var result = validator.form();
    };
}

当我执行此操作时,

var validatorObj = new jQueryValidatorWrapper('testForm', [], []);
validatorObj.validate();

jQueryValidatorWrapper函数只有一个用this声明的方法,所以当构造函数执行时,它只是用validate方法创建了一个对象。

validator内声明的jQueryValidatorWrapper变量会发生什么?它没有this的前缀,因此它不是正在构造的对象的一部分。

validator变量是全局变量吗?或者是闭包的一部分,即validate方法?

1 个答案:

答案 0 :(得分:4)

本地validator变量不是全局变量;由于关闭,它只能在validate方法中访问。

根据道格拉斯·克罗克福德的文章,它可以被视为jQueryValidatorWrapper对象的“私人成员”:http://javascript.crockford.com/private.html

3个构造函数参数也是如此。