this 的显示绑定-callapply

Posted this_trend

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了this 的显示绑定-callapply相关的知识,希望对你有一定的参考价值。

简单的栗子:

function(){
  console.log(this.a);
}
var obj={

  a:2  

};

foo.call(obj);//2  call把foo中的this指向了obj

------------------------------注意↓  "装箱"

当第一个参数传入的是:字符串类型、布尔、数字类型   这个原始值会被转换成它的对象形式

new String()  

new Boolean()

new Number()

-----------------------------显示绑定-栗子1↓

function foo(){

  console.log(this.a);

}
var obj={
  a:2
};
var bar=function(){

  foo.call(obj);

};

bar();//

setTimeout(bar,100);//
bar.call(window);//
-----------------------------显示绑定-栗子2↓

function foo(something){//3
  console.log(this.a,something);this.a=2 
  return this.a+something;  //5
}
var obj={

  a:2

};

var bar=function(){
  return foo.apply(obj,arguments);  //arguments=3    foo中的this指向了obj  

};
var b=bra(3);
console.log(b);//5

-----------------------------显示绑定-栗子3---------------Function.prototye.bind↓

function foo(something){

  console.log(this.a,something);
  return this,a+something;

}

function bind(fn,obj){//辅助绑定函数

  return function(){

    return fn.apply(obj,arguments);

  }

}
var obj={

  a:2

};
var bar=bind(foo,obj);

var b=bar(3);
console.log(b);

 

 

 

 

 

 

 

 

 

------------------------后续详细说call、apply的参数

 





















以上是关于this 的显示绑定-callapply的主要内容,如果未能解决你的问题,请参考以下文章

原生JavaScript实现callapply和bind

原生JavaScript实现callapply和bind

callapply与bind的区别

call apply bind的区别

012天this详解上

JavaScript高级this绑定绑定优先级相关面试题与箭头函数