js的call方法和apply方法
2017-09-13 19:29
375 查看
1、每个函数都包含两个非继承而来的方法:call方法和apply方法。
相同点:这两个方法的作用是一样的。
都是在特定的作用域中调用函数,等于设置函数体内this对象的值,以扩充函数赖以运行的作用域。
一般来说,this总是指向调用某个方法的对象,但是使用call()和apply(),就会改变this的指向。
不同点:接受参数的方式不同。
apply()方法: 接受两个参数,一个势函数运行的作用域(this),另一个是参数数组。
语法:apply([ thisObj,[,argArray] ]),调用一个对象的一个方法,另一个对象替换当前对象
说明:如果argArray不是一个有效数组或不是arguments对象,那么将导致一个TypeError,如果没有提供
argArray和thisObj任何一个参数,那么Global对象将用作thisObj。
call()方法:第一个参数和apply()方法的一样,但是传递给函数的参数必须列举出来。
语法:call( [ thisObject[,arg1[,arg2[arg3……..]]]] ) 应用某一个对象的一个方法,用另一个对象替换当前对象
说明:call方法可以用来代替另一个对象调用一个方法,call方法可以将一个函数的独享上下文从初始的上下文
改变为thisObj指定的新对象,如果没有提供thisObj参数,那么Global对象被用于thisObj。
相同点:这两个方法的作用是一样的。
都是在特定的作用域中调用函数,等于设置函数体内this对象的值,以扩充函数赖以运行的作用域。
一般来说,this总是指向调用某个方法的对象,但是使用call()和apply(),就会改变this的指向。
不同点:接受参数的方式不同。
apply()方法: 接受两个参数,一个势函数运行的作用域(this),另一个是参数数组。
语法:apply([ thisObj,[,argArray] ]),调用一个对象的一个方法,另一个对象替换当前对象
说明:如果argArray不是一个有效数组或不是arguments对象,那么将导致一个TypeError,如果没有提供
argArray和thisObj任何一个参数,那么Global对象将用作thisObj。
call()方法:第一个参数和apply()方法的一样,但是传递给函数的参数必须列举出来。
语法:call( [ thisObject[,arg1[,arg2[arg3……..]]]] ) 应用某一个对象的一个方法,用另一个对象替换当前对象
说明:call方法可以用来代替另一个对象调用一个方法,call方法可以将一个函数的独享上下文从初始的上下文
改变为thisObj指定的新对象,如果没有提供thisObj参数,那么Global对象被用于thisObj。
相关文章推荐
- js---js中的继承方法call、bind、apply,以及三者之间的区别总结。
- js的call 与 apply 方法
- js的call方法 apply方法 caller属性 callee属性
- JS中的call()和apply()方法
- 关于js中call()和apply()方法的区别
- js中bind、call、apply的方法使用
- js中通过call()和apply()方法实现继承类
- js中apply和call方法的应用
- JS中call,apply,bind方法的总结
- JS中的call()和apply()方法
- js的apply()和call()方法
- Js apply call方法 详解
- JS中的call()和apply()方法
- JS中的call()和apply()方法
- JS中的call和apply方法
- js中apply和call方法的应用
- js中的call和apply方法
- js apply/call/caller/callee/bind使用方法与区别分析
- JS中的call()和apply()方法
- JS中的call()和apply()方法- 实现继承