js中的apply()与call()方法

154 阅读1分钟

apply()与call()是js函数中用来改变this指向的两个方法,同时它们也具有向函数传参的功能。

向函数传参

apply()接收两个参数,一个是当前函数的this,一个是要传递的参数数组或arguments对象,比如如下 function man(name,age){ console.log(name+'的年龄是'+age); } function put(name,age){ man.apply(this,[name,age])//或者man.apply(this,arguments) } put('张三',26);//张三的年龄是26 而call()的使用方法与apply的使用方法差不多,不同的是call()传入多个参数,它需要把apply()的第二个参数展开传入。 function man(name,age){ console.log(name+'的年龄是'+age); } function put(name,age){ man.call(this,name,age) } put('张三',26);//张三的年龄是26

改变this指向

这两个方法最大的作用就是用来改变this的指向,在改变this指向时,两个方法传入的参数都是一样的,即想指向的this let mycolor={ color:'bule' } function sayname(){ console.log(this.color)//bule console.log(this)//{color:'bule'} } sayname.apply(mycolor)//将sayname中的this改为了mycolor,这里使用call也是一样的

使用 call()或 apply()的好处是可以将任意对象设置为任意函数的作用域,这样对象可以不用关 心方法。