Uczymy się, jak działa bind w JavaScript. Do dzieła.

Nasz HTML:

<p id="para">bla bla bla</p>
<button id="btn">Click me</button>

Ok, napiszmy coś prostego:

function clickMe(event){
     this.textContent = "bla bla";
}

window.addEventListener("DOMContentLoaded", function(){

    let btn = document.getElementById('btn');
    let para = document.getElementById('para');

    btn.addEventListener('click', clickMe);
  });

Kliknięcie guzika zamienia mu tekst na „bla bla”. Teraz z bind:

  function clickMe(event){
        this.textContent = "bla bla";
  }

  window.addEventListener("DOMContentLoaded", function(){

    let btn = document.getElementById('btn');
    let para = document.getElementById('para');

    btn.addEventListener('click', clickMe.bind(para));
  });

Teraz kliknięcie guzika zmienia tekst paragrafu…

function clickMe(text){
    this.textContent = text;
}

window.addEventListener("DOMContentLoaded", function(){

    let btn = document.getElementById('btn');
    let para = document.getElementById('para');

    btn.addEventListener('click', clickMe.bind(para, "new para text"));
});

A co jeżeli chcemy przekazać event? Wtedy bardziej sprawdzi się call:

function clickMe(event, text){
        console.log(event);
        this.textContent = text;
        event.target.setAttribute("disabled", true)
}

window.addEventListener("DOMContentLoaded", function(){

    let btn = document.getElementById('btn');
    let para = document.getElementById('para');

    btn.addEventListener('click', function(e){
        clickMe.call(para, e, "new para text" );
    });
  
});

Inne zastosowania bind widzieliśmy już w funkcjach partial, także powinniśmy już całkiem nieźle ogarniać call/apply/bind…