2016-12-24 12 views
0

JavaScriptを使用してオブジェクト指向のコードを書く練習をしようとしていますが、それでも私は混乱します。他の人がこの質問をしているのを見たことがありますが、本当の明確な答えは見つかりませんでした。ネストされた関数を持つプロパティがあり、親クラスのプロパティの1つを使用したいと思います。親クラスを参照する方法?

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を使用してインスタンスを作成します。このようなオブジェクトを使うことは、しばしば「シングルトン」と呼ばれます。

関連する問題