Так что я не могу понять, почему переменная this.tasks становится неопределенной внутри прослушивателя событий. У меня внутри объекта цели. У меня такое чувство, что это может иметь какое-то отношение к асинхронному программированию (которое я до сих пор не совсем понимаю). Извините, я немного JS noob, но если вы, ребята, можете объяснить мне, что я делаю неправильно, и что может быть лучшим решением, которое было бы потрясающе! Благодарю.Объектная переменная javascript становится неопределенной внутри анонимной функции
function Goal(name) {
this.gDiv = document.createElement('div');
this.name = name || "goal";
this.tasks = document.createElement('ul');
//Sets the styling and content and adds it to the parent element
this.initialize = function() {
this.gDiv.className = "default";
this.gDiv.setAttribute("id", this.name);
this.gDiv.innerHTML = this.name;
elem.appendChild(this.gDiv);
this.gDiv.parentNode.insertBefore(this.tasks, this.gDiv.nextSibling);
this.tasks.style.display = "none";
};
//Creates a list underneath the a dive associated with the Goal object
this.addTask = function(task) {
var newLi = document.createElement('li');
newLi.innerHTML = task;
this.tasks.appendChild(newLi);
};
this.gDiv.addEventListener('click', function(){
alert(this.tasks);
});
}
Спасибо, ребята! Вы все ответили на мой вопрос! Некоторое время я почесывал голову. Престижность для всех вас!
Ваш ответ был хороший. Вы изменили его, и теперь я хотел бы знать, что заставляет вас думать, что лучше использовать метод jQuery? – Xotic750
В большой базе кода я вижу «var self = this;» идиома все время, и она становится неуклюжей, особенно после того, как у вас есть дальнейшее гнездование закрытий. Это гарантирует, что ваше «это» всегда то, что вы намереваетесь. –
Или можно использовать метод вызова – Misters