JS中的call()和apply()的区别
2018-07-20 本文已影响0人
汶沐
每个函数都包括两个非继承而来的方法:call()和apply()
一般来说,this总是指向调用某个方法的对象,但是使用call()和apply()方法时,就会改变this的指向。
![](https://img.haomeiwen.com/i7278812/fc892f05c83b66c6.png)
![](https://img.haomeiwen.com/i7278812/86dbe07608895c9a.png)
![](https://img.haomeiwen.com/i7278812/5f580be4d30a57ab.png)
![](https://img.haomeiwen.com/i7278812/69df147911a82a79.png)
相同点:这两个方法的作用是一样的,都是在特定的作用域中调用函数,等于设置函数体内this对象的值,以扩充函数赖以运行的作用域。
不同点:接收参数的方式不同
● apply()方法 接收两个参数,一个是函数运行的作用域(this),另一个是参数数组。
语法:apply(thisObj,[数组])
● call()方法 第一个参数和apply()的方法一样,但是传递给函数的参数必须列举出来。
语法:call(thisObj,arg1.arg2.arg3.....)
使用示例1:
![](https://img.haomeiwen.com/i7278812/e73c2b2d97663b71.png)
使用示例2:
![](https://img.haomeiwen.com/i7278812/5384f2efd7e0ef52.png)
(本文摘自https://blog.csdn.net/ganyingxie123456/article/details/70855586)