apply()与call()的区别
2019-03-28 11:17
85 查看
转载 https://www.cnblogs.com/lengyuehuahun/p/5643625.html#3757746
JavaScript中的每一个Function对象都有一个apply()方法和一个call()方法,它们的语法分别为:
/*apply()方法*/ function.apply(thisObj[, argArray]) /*call()方法*/ function.call(thisObj[, arg1[, arg2[, [,...argN]]]]);
各自的定义:
apply:调用一个对象的一个方法,用另一个对象替换当前对象。例如:B.apply(A, arguments);即A对象应用B对象的方法。
call:调用一个对象的一个方法,用另一个对象替换当前对象。例如:B.call(A, args1,args2);即A对象调用B对象的方法。
-
共同点
都“可以用来代替另一个对象调用一个方法,将一个函数的对象上下文从初始的上下文改变为由thisObj指定的新对象”。 -
不同之处、
apply:最多只能有两个参数——新this对象和一个数组argArray。如果给该方法传递多个参数,则把参数都写进这个数组里面,当然,即使只有一个参数,也要写进数组里。如果argArray不是一个有效的数组或arguments对象,那么将导致一个TypeError。如果没有提供argArray和thisObj任何一个参数,那么Global对象将被用作thisObj,并且无法被传递任何参数。
call:它可以接受多个参数,第一个参数与apply一样,后面则是一串参数列表。这个方法主要用在js对象各方法相互调用的时候,使当前this实例指针保持一致,或者在特殊情况下需要改变this指针。如果没有提供thisObj参数,那么 Global 对象被用作thisObj。
实际上,apply和call的功能是一样的,只是传入的参数列表形式不同。
相关文章推荐
- 关于JavaScript中apply与call的用法意义及区别
- js中的call和apply方法的区别
- call,apply,bind方法区别
- JS中call和apply区别有哪些 记录
- javascript 中 call() 和 apply() 的区别
- call、apply和bind方法的用法以及区别
- 【js】call,apply的区别
- 【js】javascript中call()和apply()方法的区别
- 关于.call和.apply的区别
- js中bind、call和apply的区别
- JavaScript call()和apply()方法区别
- call和apply的用法和区别
- javascript中apply、call和bind的区别
- apply与call的用法意义及区别
- javascript中apply和call的区别
- call()和apply() 的区别
- 关于javascript中apply()和call()方法的区别
- apply, call的用法与区别
- JS中call()、apply()、bind()的区别及用法
- javascript中apply、call和bind的区别