this与call,apply,bind之间的关系

1.浏览器里,在全局范围内的this 指向window对象;

2.在函数中,this永远指向最后调用他的那个对象;

3.构造函数中,this指向new出来的那个新的对象;

4.Call、apply、bind中的this被强绑定在指定的那个对象上;

5.箭头函数中this比较特殊,箭头函数this为父作用域的this,不是调用时的this.要知道前四种方式,都是调用时确定,也就是动态的,而箭头函数的this指向是静态的,声明的时候就确定了下来;

6.apply、call、bind都是js给函数内置的一些API,调用他们可以为函数指定this的执行,同时也可以传参。

 

三者的共同点:

都是改变this指向的

 

 

区别:

call()和apply() 

共同点:

将this指向第一个参数。

apply和call都是为了改变某个函数运行时的上下文而存在的(就是为了改变函数内部this的指向);

不同点:

在于第二个参数,call第二个参数是一个一个的数据,apply第二个参数是数组。

 

bind()

也是改变函数体内this的指向,需要加()才能执行;

bind与apply、call最大的区别就是:bind不会立即调用,其他两个会立即调用

三个的使用区别:
都是用来改变函数的this对象的指向的;
第一个参数都是this要指向的对象
都可以利用后续参数传参
bind是返回对应函数,便于稍后调用,apply、call是立即调用;

 

总结:

1、call、apply修改this指向,同时执行函数,二者只不过是传参方式不同。fn.call(修改后的this所代表的值,参数1,参数2,...)
fn.apply(修改后的this所代表的值,[参数1,参数2,参数3,...])

call将函数的参数按照 分割,apply将参数放在数组

2、bind,修改this指向,不立即执行函数,只是返回修改this指向后的函数,函数的参数也是用, 分割。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值