call( )和apply()
相同点
----这两个方法都是函数对象的方法,需要通过函数对象来调用
----当对函数调用call( )和apply( )都会调用函数执行
----在调用call( )和apply( )可以将一个对象指定为第一个参数
此时这个对象将会成为函数执行时的this区别
---- call( )方法可以将实参在对象之后依次传递---- apply( )方法需要将实参封装到一个数组中统一传递
相同点:
1.这两个方法都是函数对象的方法,需要通过函数对象来调用
2.当对函数调用call( )和apply( )都会调用函数执行
注:fun 是 函数对象 fun() 是 函数对象返回值
3.在调用call( )和apply( )可以将一个对象指定为第一个参数
此时这个对象将会成为函数执行时的this
区别
1.call( )方法可以将实参在对象之后依次传递
1.function fun(a,b) 传入两个形参 a,b
2.函数调用 fun.call(obj) 只将this指向obj 但未传参数
3.函数返回值为undefined
4.传入参数 2, 3 在函数调用 fun.call(obj)中
5.控制显示a=2 b=3
2. apply( )方法需要将实参封装到一个数组中统一传递
总结:
call( )和apply()
相同点
1.这两个方法都是函数对象的方法,需要通过函数对象来调用
2.当对函数调用call( )和apply( )都会调用函数执行
3.在调用call( )和apply( )可以将一个对象指定为第一个参数
此时这个对象将会成为函数执行时的this区别
call( )方法可以将实参在对象之后依次传递
apply( )方法需要将实参封装到一个数组中统一传递
this的情况:
1.以函数形式调用时,this永远都是window
2.以方法的形式调用时,this是调用方法的对象
3.以构造函数的形式调用时,this是新创建的那个对象
4.使用call和apply调用时,this是指定的那个对象
知识点来自尚硅谷听课总结