0

Есть класс

function Form() {

this.submit = function(e) {
    this.test() // тут пишет test is undefined
    // как мне здесь вызвать мой метод
    // пробовал через прототипы, та же ерунда
    // для других методов все прекрасно работает, но вот когда я привязываю 
    // событие, то не могу вызвать метод, как его вызвать?
};

this.test= function() {
    console.log('dfdfdf')
};
}

var formObj = document.getElementById('login-form');
var form = new Form();
formObj.addEventListener('submit', form.submit);

Как правильно вызвать метод, или хотя бы вызвать его.

1 Answers1

1

Во время вызова метода контекст меняется, и ссылка this уже не указывает на родительский объект Form, поэтому её следует сохранить в приватной переменной (self).

function Form() {
var self = this;

this.submit = function(e) { self.test(); }

this.test= function() { console.log('dfdfdf'); } }

var formObj = document.getElementById('wmd-input'); var form = new Form(); formObj.addEventListener('submit', form.submit); formObj.dispatchEvent(new Event('submit'));

// dfdfdf

Okto
  • 26