У меня есть класс javascript с глобальными переменными и методами, а метод specefic делает некоторые extrange.Утеряны значения глобальных переменных в классе 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;
},
В качестве обходного пути мне пришлось присвоить значение, где по-прежнему существуют глобальные переменные. Но мой вопрос: почему эти переменные потеряли свои ценности?
Второе появление 'inputDiv' внутри другой функции, [который имеет другой масштаб.] (Http://stackoverflow.com/questions/500431/what-is-the-scope-of- variables-in-javascript) – Blazemonger
'inputDiV' и' action' не являются глобальными переменными, они являются локальными переменными внутри функции 'validation'. – Barmar
Вы должны использовать 'this.inputDiv'. – Barmar