2015-11-20 16 views
6

Bir jQuery .click yönteminde bir Javascript yapıcı yönteminin nasıl kullanılacağını anlayamıyorum. Bir kurucuya göre dinamik olarak değiştirmek için bir düğmenin işlevini almaya çalışıyorum. Burada, başka bir düğmeye bağlı olarak değişen bir yöntemi çağırmak gerekiyor. Aşağıdaki benim kırık koddur. Ben $ ("# Site İçi") nasıl bilemiyorum Javascript yapıcı yöntemlerini jQuery ifadesinde nasıl kullanırsınız?

function GloveMode (name , array) { 

     this.colorArray = array; 

     this.displaySettings = function(){ 

      //Title 
      $("#displayTitle").text(this.name); 
      //Display Color Set 
      $("#displayColors").empty(); 


      //Totally Broken 
      $("#upArrow").click(function(){ 

       addColor(); 

      }); 

     }; 

     this.addColor = function(){ 

      console.log(this.colorArray.length); 

     }; 
    }; 

) (düzgün this.colorArray çağırmak veya this.addColor çağırmak nasıl) (tıklayın .click() yönteminde! Lütfen yardım et.

+1

var self = this; self.addColor() {...} – Enjoyted

+0

Bu, JavaScript'in prototipleme yönü devreye giriyor. Teorik olarak, GloveMode'un bu özelliklere (varsa) erişmek için özellikler ve yöntemler içeren bir varlık olmasını istersiniz. Yine de küresel tıklama işleyicileri içermemelidir. Örneğin, tıklama işleyicisinin ad mülkünüze erişmesini istiyorsanız, söz konusu mülke erişmek ve tıklama işleyicisine geri göndermek için 'GloveMode.name' kullanacaksınız. – War10ck

cevap

4

Sorununuz "bu" her bir işlev gövdesinde farklı bir anlam ifade eder. Yani istenen "bu" ifadesini bir değişkene kaydedin. "kendini" ve bunu kullan.

+0

Teşekkür ederim. Burada 'bu' kelimesini temsil eden bir değişkenin neden kullanıldığını anlamıyorum, nedenini bilen var mı? –

+0

Bir isim (anonim işlev bildirimi) olmadan "this.addColor" üye değişkeni tarafından temsil edilen bir işlevi tanımladığınızdan. Böylece bu işlevi yalnızca 'this.addColor' üye değişkeni ile referans gösterebilirsiniz. Eğer bu işleve “addClass() ...” işlevi gibi bir isim vermiş olsaydınız, kod örneğinizde yaptığınız gibi ona erişebilirdinizdi. –