this指向以及改变指向(call、applay和bind的区别)

一、this的指向

▲this用来标明代码到底在哪里执行
▲不管在什么情况下,this总是返回一个对象。
this指向以及改变指向(call、applay和bind的区别)

二、改变this指向

▲this的动态切换固然灵活,但也使编程变得困难和模糊。在某些情况下需要把this固定下来,避免出现意外情况。javaScript提供 了三种方法来切换/固定this指向:callapplaybind
1、call()方法和apply方法的作用相同,但接受参数的方式不同。
call()方法:传递给函数的参数必须逐个例举出来。
apply()方法:接受两个参数,一个是其中运行函数的作用域,另一个是参数数组(array实例或 argument对象)
△使用call()还是apply()取决于采用哪种给函数传参的方式更方便。
2、bind()方法会返回一个新的函数,其方法的参数就是所要绑定this的对象
3、call/apply和bind区别
call/apply:改变了函数的this上下文后马上执行该函数,返回函数的执行结果
bind:返回改变了上下文后的函数,不执行该函数,返回函数的拷贝,并指定了函数的this指向,保存了函数的参数。