2016-12-24 44 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

附加到對象的任何函數都稱爲「方法」,您可以通過在方法範圍中引用「this」來訪問它所附加的對象。既然你是一個孩子的功能範圍內,存儲父範圍,並使用它:

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的實例。使用這樣的對象通常被稱爲「單身人士」。