[javascript] brauche Erklärung der _.bindAll () Funktion von Underscore.js


Answers

Die einfachste Erklärung für mich ist die nächste:

initialize:function () { //backbone initialize function
    this.model.on("change",this.render); //doesn't work because of the wrong context - in such a way we are searching for a render method in the window object  
    this.model.on("change",this.render,this); //works fine
    //or 
    _.bindAll(this,'render');
    this.model.on("change",this.render); //now works fine
    //after  _.bindAll we can use short callback names in model event bindings
}
Question

Ich habe etwas backbone.js gelernt und ich habe viele Fälle gesehen, in denen _.bindAll() verwendet wurde. Ich habe die gesamte backbone.js und underscore.js Dokumentation Seite gelesen, um zu versuchen, einen Sinn dessen zu bekommen, was es tut, aber ich bin immer noch sehr unscharf, was es tut. Hier ist die Erklärung des Unterstrichs:

_.bindAll(object, [*methodNames]) 

Bindet eine Anzahl von Methoden für das Objekt, die von methodNames angegeben werden, um bei jedem Aufruf im Kontext dieses Objekts ausgeführt zu werden. Sehr praktisch für das Binden von Funktionen, die als Event-Handler verwendet werden, die ansonsten mit einem ziemlich nutzlosen Aufruf aufgerufen würden. Wenn keine methodNames angegeben sind, sind alle Funktionseigenschaften des Objekts an sie gebunden.

var buttonView = {
  label   : 'underscore',
  onClick : function(){ alert('clicked: ' + this.label); },
  onHover : function(){ console.log('hovering: ' + this.label); }
};

_.bindAll(buttonView);

jQuery('#underscore_button').bind('click', buttonView.onClick);
=> When the button is clicked, this.label will have the correct value...

Wenn Sie hier vielleicht mit einem anderen Beispiel oder einer verbalen Erklärung helfen können, würde alles geschätzt werden. Ich habe versucht, nach weiteren Tutorials oder Beispielen zu suchen, aber ich komme nicht dazu, das zu servieren, was ich brauchte. Die meisten Leute scheinen einfach zu wissen, was es automatisch macht ...




Related