2016-05-11 14 views
0

Ich bin gerade dabei, einige Helfer-Bibliotheken zu erstellen und habe ein interessantes Problem gefunden. Wie kann ich nämlich - innerhalb einer Funktion - auf ein Objekt Bezug nehmen, das die genannte Funktion ausgeführt hat?JavaScript - Objekt (e), das sich auf sich selbst bezieht

Vielleicht ist meine Erklärung nicht klar ist, also hier ist der Code:

HTML

<div class=".ful">...</div> 

JS

class Moon { 
    onEvents(what, events, callback) { 
     const ev = events.split(' '); 

     for (let t of Array.from(what)) { 
      for (let e of ev) { 
       t.addEventListener(e,() => { 
        callback(); 
       }); 
      } 
     } 
    } 
} 

const moon = new Moon(); 

moon.onEvents(document.querySelectorAll('.ful'), 'click mouseover',() => { console.log('identikit'); }); 

Dies funktioniert gut, aber wenn ich möchte so etwas wie

moon.onEvents(document.querySelectorAll('.ful'), 'click mouseover',() => { console.log(this); }); 

Ich bekomme undefined. Was kann ich tun?

Antwort

2

Der Punkt einer Pfeilfunktion ist, den aktuellen Wert von this zu binden. Wenn Sie das nicht möchten, verwenden Sie keine Pfeilfunktion.

moon.onEvents(document.querySelectorAll('.ful'), 'click mouseover', function() { console.log(this); }); 

und

t.addEventListener(e, callback); 
+0

Arbeiten groß, dank ein paar Quentin! –

Verwandte Themen