call()和apply()
- 解释:这两个函数的作用都是在特定的作用域中将函数绑定到另一个对象上去运行,即可以用来重新定义函数的执行环境,两者仅在定义参数方式上有所区别
- 这两个方法都是函数对象的方法,需要通过函数对象来调用
- 当对函数调用call()和apply()都会调用函数执行
- 在调用call和apply()可以将一个对象指定为第一参数
- 此时这个对象将会成为函数执行时的this
- call()方法可以将实参在对象之后依次传递
- apply()方法需要将实参封装到一个数组中统一传递
this的情况:
- 以函数形式调用时,this永远都是window
- 以方法形式调用时,this时调用方法的对象
- 以构造函数的形式调用时,this时新创建的那个对象
- 使用call和apply调用时,this是指定的那个对象
1 | fun.call(obj,2,3); //2,3是fun函数的参数 |