antoniojps
4/9/2017 - 3:01 PM

Javascript: Call, Apply e Bind

Javascript: Call, Apply e Bind



var obj = {
  name: 'John Doe',
  greet () {
    console.log(`Hey ${this.name}`);
  }
};

obj.greet(); // Hey John Doe
// Chamar o metodo e mudamos o this, diferença entre call e apply é que no apply os params sao uma array
obj.greet.call({name:'Manel Alberto'},param1,param2,param3); // Hey Manel Alberto
obj.greet.apply({name:'Manelito Alberto'},[param1,param2,param3]); // Hey Manelito Alberto

// Bind muda a this mas nao invoca

function MyObject(element) {
  this.elm = element;

  element.addEventListener('click', this.onClick.bind(this), false);
};

MyObject.prototype.onClick = function(e) {
  var t=this;  //do something with [t]...
  //without bind the context of this function wouldn't be a MyObject
  //instance as you would normally expect.
};