bind、call、apply

时间:2021-05-07 10:23:46   收藏:0   阅读:24

相同点:

  他们的相同都是来改变this的指向问题。

不同点:

  call传参是有多个的参数,第一个是this的指向的对象,后面的是需要使用到的参数。

  apply是两个参数第一个是this的指向的对象。第二个参数是一个数组。

//例如:
var obj = {}//定义一个空的对象
function f(x,y){
console.log(x,y)
console.log(this) //this是指obj
}
f.apply(obj,[1,2]) //后面的值需要用[]括起来
f.call(obj,1,2) //直接写

 

  bind的传参数和call是一样的,但是call使用了就会直接执行这个函数,但是bind是返回一个函数。需要再执行。

//例如:
function f(){
console.log("看我怎么被调用");
console.log(this) //指向this
}
var obj = {};
f.call(obj) //直接调用函数
var g = f.bind(obj); //bind()不能调用函数
g();  //此时才调用函数

 

原文:https://www.cnblogs.com/yuxinyu/p/14737734.html

评论(0
© 2014 bubuko.com 版权所有 - 联系我们:wmxa8@hotmail.com
打开技术之扣,分享程序人生!