call、apply、bind三者为改变this指向的方法
共同点:第一个参数都为改变this的指针。若第一参数为null/undefined,this默认指向windowcall(无数个参数)
第一个参数:改变this指向
第二个参数:实参
使用之后会自动执行该函数
function fn(a,b,c){ console.log(this,a+b+c); // this指向window } fn(); fn.call(document,1,2,3);//call改变之后this 由 window 指向document //输出 #document 6 1,2,3是实参 结果相加为6apply(两个参数)
第一个参数:改变this指向
第二个参数:数组(里面为实参)
使用时候会自动执行函数
function fn(a,b,c){ console.log(this,a+b+c); } fn(); fn.apply(document,[1,2,3]);bind(无数个参数)
第一个参数:改变this指向
第二个参数之后:实参
返回值为一个新的函数
使用的时候需要手动调用下返回 的新函数(不会自动执行)
function fn(a,b,c){ console.log(this,a+b+c); //window } fn.bind("小明",1,2,3)(); //手动调用一下
call、apply与bind区别:前两个可以自动执行,bind不会自动执行,需要手动调用call、bind与apply区别:前两个都有无数个参数,apply只有两个参数,而且第二个参数为数组
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/108936.html
摘要:一前言指向,,,的区别是一个经典的面试问题,同时在项目中会经常使用到的原生的方法。中可能会极大的避免了产生的错误,有时候需要维护老的项目还是有必要了解一下的指向和,,三者的区别。 一、前言 this指向,apply,call,bind的区别是一个经典的面试问题,同时在项目中会经常使用到的原生的js方法。同时也是ES5中的众多坑的一个。ES6中可能会极大的避免了this产生的错误,有时候...
摘要:如果连续呢结果会是什么结果还是第一个原因是,在中,多次是无效的。更深层次的原因,的实现,相当于使用函数在内部包了一个,第二次相当于再包住第一次故第二次以后的是无法生效的。 this 1.其实js中的this没那么难理解,当找不到this时记住一句话:谁调我,我就指谁!new 谁指谁 function text1(){ console.log(this); //指wind...
摘要:不能应用下的等方法。首先我们可以通过给目标函数指定作用域来简单实现方法保存,即调用方法的目标函数考虑到函数柯里化的情况,我们可以构建一个更加健壮的这次的方法可以绑定对象,也支持在绑定的时候传参。原因是,在中,多次是无效的。 bind 是返回对应函数,便于稍后调用;apply 、call 则是立即调用 。 apply、call 在 javascript 中,call 和 apply 都是...
摘要:首先我们可以通过给目标函数指定作用域来简单实现方法保存,即调用方法的目标函数考虑到函数柯里化的情况,我们可以构建一个更加健壮的这次的方法可以绑定对象,也支持在绑定的时候传参。原因是,在中,多次是无效的。而则会立即执行函数。 bind 是返回对应函数,便于稍后调用;apply 、call 则是立即调用 。 apply、call 在 javascript 中,call 和 apply 都是...
摘要:和区别其实他们的作用是一样的,只是传递的参数不一样而已。接受个参数,第一个参数指定了函数体内对象的指向,第二个参数为数组或者一个类数组。看个栗子一个有意思的事在中,多次是无效的。而则会立即执行函数。 背景 前两天在做小程序的需求的时候用到bind的时候才想起自己对这三的东西的了解比较浅薄,这个时候用的时候就有点怕。时候还是要好好学习下,理解下怎么玩。 正文 先说call 和 apply...
阅读 3515·2021-11-15 11:38
阅读 834·2021-11-08 13:27
阅读 2248·2021-07-29 14:50
阅读 2977·2019-08-29 13:06
阅读 845·2019-08-29 11:22
阅读 2417·2019-08-29 11:04
阅读 3509·2019-08-28 18:23
阅读 895·2019-08-26 13:46