Я только начинаю в OO javascript, поэтому, пожалуйста, потерпите меня.
Это работает:
var myObj = {
foo : function() {
alert('hello');
this.bar();
},
bar: function() {
alert('world');
}
}
Однако, если я сделаю некоторые другие вещи после предупреждения hello в методе "foo", то значение "this" изменится с объекта на то, что я выбрал последним, поэтому использование this.bar()
не выполнит другой метод в учебный класс.
Итак, я попытался кешировать «this» в переменной следующим образом:
var myObj = {
publicVars: {
theObj : this
},
foo : function() {
alert('hello');
publicVars.theObj.bar();
},
bar: function() {
alert('world');
}
}
Но это тоже не сработало. Так в чем же решение?
EDIT
Вот мой фактический код:
var formObj = {
validate : function(theForm) {
$('input, textarea', theForm).each(function() {
var valueLength = $(this).val().length;
if (valueLength === 0) {
$(this).addClass('invalid');
this.listenForInput($(this)); // <!------- this isn't working
}
});
},
listenForInput : function(theField) {
// theField.keyup(function() {
// if ($(this).val().length > 0) {
// theField.removeClass('invalid');
// }
// });
alert('I work!!!!');
}
} // end obj