JS高级-apply、call、bind

apply和call

作用:改变this的指向

使用方法:

Function.prototype.apply = function (thisArg,Array){}

thisArg表示调用方法的对象,Array表示调用方法所需要的参数数组

函数名字.apply(对象,[参数1,参数2,…])

方法名字.apply(对象,[参数1,参数2,…])

Function.prototype.call = function (thisArg,canshu1,canshu2,…){}

thisArg表示调用方法的对象,后面直接把参数列在后面

函数名字.call(对象,参数1,参数2,…)

方法名字.call(对象,参数1,参数2,…)

不同的地方:参数传递的方式是不一样的

何时使用:

只要是想使用别的对象的方法,并且希望这个方法是当前对象的,那么就可以使用apply或者是call来改变this的指向。

apply和call到底是谁的?

f1.proto === Function.prototype 也就是说所有的函数都是Function的实例对象

apply和call方法实际上并不在函数这个实例对象中,而是在Function的prototype中。

bind

Function.prototype.bind = function (thisArg,arg1,arg2,…){}

function f1(x,y) {

console.log(x+y)

}

var ff = f1.bind(null);

ff(10,20);

复制了一份函数f1给了ff,并在调用ff的时候将参数传了进去,null就是this,默认就是window

bind方法是复制的意思,参数可以在复制的时候就传进去,也可以在复制之后在调用的时候传进去。apply和call是在调用的时候改变this指向,bind方法时在复制的时候改变了this的指向,

使用方法:

函数名字.bind(对象,参数1,参数2,…) 返回的是复制之后的这个函数

方法名字.bind(对象,参数1,参数2,…) 返回的是复制之后的这个方法

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容