千锋教育JavaScript全套视频教程(10天学会Js,前端javascrip

P 119 118-改变this指向
不同的环境中 this的指向不同但是有时会我们需要让这个this指向一个特定的地方 我们就需要强行改变this指向
方法
call()
语法 : 函数名.call(参数1,参数2,参数3,.....)
参数1 : 表示的是你的this要指向的对象 或者是你要让this指向哪里
从参数2 开始是你传递的参数 有多少写多少 需要一个一个传递
语法 : 对象.函数名.call 参数1,参数2,参数3,.....)
特点
这个函数会立即执行
apply()
语法:函数 .apply(参数1 , 参数2)
参数1 : 表示的是你的this要指向的对象 或者是你要让this指向哪里
参数2 是一个数组 里面存放的是你要传递的参数 有多少都要放在这个数组里
语法:对象.函数 .apply(参数1 , 参数2)
特点
这个函数会立即执行
bind()
语法 : 函数名.bind(参数1,参数2,参数3,.....)
参数1 : 表示的是你的this要指向的对象 或者是你要让this指向哪里
从参数2 开始是你传递的参数 有多少写多少 需要一个一个传递
语法 : 对象.函数名.bind 参数1,参数2,参数3,.....)
特点
不会立即执行
会返回一个改变this指向以后的函数
如果想要执行 需要调用这个函数
这个时候的this被锁死不能再改变
总结
相同点
都可以改变this的指向
不同点
传递参数的不同
call()和bind()传递参数的方式是一样的 需要一个一个传递
apply() 参数2 需要传递一个数组 需要的参数都需要放到数组中
执行时机
call()和apply()会立即执行
bind()不会立即执行 会返回一个改变this指向以后的函数 需要调用以后执行