簡體   English   中英

Javascript類上的全局變量值丟失

[英]Global variables values on Javascript Class are lost

我有一個帶有全局變量和方法的javascript類,一個特殊的方法使一些擴展。

DOOM = (function () {
/** Class VALIDATIONS **/
var validation = function (form, inputDiv, action) {
    this.form = form;
    this.inputDiv = inputDiv; // -- This Variable
    this.action = action; // -- And This Variable
};
validation.prototype = {
    validate: function (rules, messages) {
        this.rules = rules;
        this.messages = messages;

        console.log(inputDiv);  // -- here still have value
        console.log(inputDiv);  

       $(this.form).validate({
            rules: this.rules,
            messages: this.messages,
            submitHandler: function(form){

                var getDom = new DOOM.DOM();
                var data = getDom.buildJSONValuesByJSON(getDom.buildJSONObjByForm(inputDiv)); // -- But here, already haven't value

                var sendData = new DOOM.callAJAX(action);
                sendData.start(data);

                console.log('[submitHandler] = '+ data);
                return false; 
            },

解決方法是,我必須在仍然具有全局變量值的地方分配值。 但是我的問題是,為什么這些變量失去了他的價值?

在函數的參數列表中命名的變量始終是局部變量,而不是全局變量。 因此,在validation()構造函數中, inputDiv是局部變量。 如果你看到的東西,當你做console.log(inputDiv)validation.prototype.validate()它必須是從您發布的代碼之外聲明不同的變量。

要訪問inputDiv中提供給構造函數的inputDiv ,需要使用this.inputDiv

validation.prototype = {
    validate: function (rules, messages) {
        this.rules = rules;
        this.messages = messages;

        var inputDiv = this.inputDiv;

        console.log(inputDiv);

       $(this.form).validate({
            rules: this.rules,
            messages: this.messages,
            submitHandler: function(form){

                var getDom = new DOOM.DOM();
                var data = getDom.buildJSONValuesByJSON(getDom.buildJSONObjByForm(inputDiv));

                var sendData = new DOOM.callAJAX(action);
                sendData.start(data);

                console.log('[submitHandler] = '+ data);
                return false; 
            },

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM