2016-12-24 7 views
0

Я пытаюсь практиковать написание объектно-ориентированного кода с помощью javascript, но это все еще запутывает меня. Я видел, как другие люди задают этот вопрос, но я не нашел реального ясного ответа. У меня есть свойство, которое имеет вложенную функцию, и я хочу использовать одно из свойств родительского класса.Как обратиться к родительскому классу?

var myClass = { 
 
\t btn: document.getElementById('btn'), 
 
\t color: "#000", 
 

 
\t clickListener: function(){ 
 
\t \t this.btn.addEventListener("click", function(){ 
 
\t \t \t this.style.background = myClass.color; 
 
\t \t }); 
 
\t }, 
 
}

Это единственный способ, которым я могу заставить его работать, но это кажется странным, используя имя класса внутри класса. Есть ли лучший способ сделать это или это нормально?

+0

См. [Этот вопрос] (http://stackoverflow.com/questions/3127429/how-does-the-this-keyword-work), в скором времени вы захотите сохранить ссылку 'this' для вашего мероприятия область слушателя. – Nit

ответ

1

Любая функция, привязанная к объекту, называется «методом», и вы можете получить доступ к объекту, к которому он присоединен, путем ссылки на «это» в области метода. Так как вы находитесь внутри функции ребенка рамки, сохранить родительский объем и использовать его:

var myClass = { 
    btn: document.getElementById('btn'), 
    color: "#000", 

    clickListener: function(){ 
     var self = this; 
     this.btn.addEventListener("click", function(){ 
       this.style.background = self.color; 
     }); 
    }, 
} 

Комментарий: Это не обычно упоминается как «класс» в JavaScript, говорят, так как это объект. «классы» обычно являются функциями, что вы делаете примеры использования new. Использование такого объекта чаще всего упоминается как «singleton».

Смежные вопросы