call apply bind的作用和区别
1.call apply bind 的作用和区别
作用:
都可以改变函数内部的this指向。
区别点:
1.call和apply会调用函数,并且改变函数内部this指向。
2.call和apply传递的参数不一样,call传递参数arg1,arg2..形式apply必须数组形式[arg]
3.bind不回调用函数,可以改变函数内部this指向。
解析:
call方法
改变函数内部this指向
call()方法调用一个对象。简单理解为调用函数的方式,但是它可以改变函数的this指向。
写法:fun.call(thisArg,arg1,arg3,...)//thisArg为想要指向的对象,arg1,arg3为参数
call的主要作用页可以实现继承
function Person(uname,age){this.uname = unamethis.age = age
}
function Son(uname,age){Person.call(this,uname,age)
}
var son = new Son("zhang",12)
console.log(son)
apply()方法
apply()方法调用一个函数。简单理解为调用函数的方法,但是它可以改变函数的this指向
写法:fun.apply(thisArg,[argsArray])
- thisArg:在fun函数允许时指定的this值
- argsArray:传递的值,必须包含数组里面
- 返回值就说函数的返回值,因为他就说调用函数
apply的主要应用,比如可以利用apply可以求得数组中最大值
const arr = [1,22,3,44,5,66,7,88,9]
const max = Math.max.apply(Math,arr)
console.log(max)
bind()方法
bind()方法不回调用函数,但是能改变函数内部this指向
写法:fun.bind(thisArg,arg1,arg2,...)
thisArg:在fun函数运行时指定的this值
arg1,arg2:传递的其他参数
返回由指定的this值和初始化参数改造的原函数拷贝
var o = {name:"lisa"
};
function fn(){console.log(this)
}
var f = fn.bind(o)
f()
bind应用
如果有的函数我们不需要立即调用,但是又需要改变这个函数的this指向,此时用bind再合适不过了
const btns = docment.querySelectorAll("button");
for(let i = 0;i<btns.length;i++){btns[i}.onclick = function(){this.disabled = true;setTimeout(function(){this.disabled = false}.bind(this),2000)}
}
扩展:
主要应用场景:
1.call经常做继承。
2.apply经常跟数组有关系,比如借助于数学对象实现数组最大值最小值。
3.bind不调用函数,但是海想改变this指向,比如改变定时器内部的this指向。
call apply bind的作用和区别相关推荐
- call apply bind 的作用和区别
1.call apply bind 的作用和区别 作用: 都可以改变函数内部的this指向. 区别点: 1.call和apply会调用函数,并且改变函数内部this指向. 2.call和apply传递 ...
- call(),apply(),bind()的用法及举例
通过学习call(),apply(),bind()的用法和区别,我们能更好的理解this及作用域的含义,为后面的编程打下基础. call()的用法: 调用一个函数,使其具有一个指定的this值和分别地 ...
- call,apply,bind的用法与区别
1.call/apply/bind方法的来源 首先,在使用call,apply,bind方法时,我们有必要知道这三个方法究竟是来自哪里?为什么可以使用的到这三个方法? call,apply,bind这 ...
- JavaScript中的call,apply,bind区别及应用(包含手写call/apply/bind)
目录 一.使用目的 二.三者分别是如何定义的及区别(摘自MDN) 三.在程序中收获 四.三者的具体应用 四.手写bind,apply,call 今天在读程序题的时候,遇到call,apply,bind ...
- JavaScript的call,apply和bind方法之间的区别
by Rajat Saxena 通过拉贾特·萨克森纳(Rajat Saxena) JavaScript的call,apply和bind方法之间的区别 (The difference between J ...
- JavaScript中的call,apply,bind学习总结
JavaScript 中的 call, apply, bind 这三个函数的作用和区别在各大论坛都被讨论了很多次了,但是我一直都还没来得及好好总结,这次正好看到了一个很不错的关于JavaScript ...
- call apply bind 深入了解
不知其理,何以谈用 众所周知 call.apply.bind 的作用都是'改变'作用域,但是网上对这这'改变'说得含糊其辞,并未做详细说明,'改变'是直接替换作用域?谁替换谁?怎么产生效果?这些问题如 ...
- call,apply,bind,new实现原理
在实际开发过程中,对于函数封装时,不确定外部是谁调用的,调用函数内部方法时,有可能是window调用这时就会报错,常使用call,apply,bind来绑定this指向. Function.proto ...
- bind函数作用、应用场景以及模拟实现
bind函数 bind 函数挂在 Function 的原型上 Function.prototype.bind 创建的函数都可以直接调用 bind,使用: function func(){console ...
- JavaScript内置一些方法的实现原理--new关键字,call/apply/bind方法--前戏
new关键字,call/apply/bind方法都和this的绑定有关,在学习之前,首先要理解this. 一起来学习一下this吧 首先.this是一个对象. 对象很好理解,引用类型值,可以实现如th ...
最新文章
- c语言s开头的函数以及作用,C语言函数大全-s开头-完整版.doc
- ue4 改变枢轴位置_【UE4地形】轻松实现UE4自动地貌和自动植被分布
- 【FFmpeg】FFmpeg 帮助文档使用
- mysql查询通过两个字段逆序
- ES6新特性之Generator函数
- Hybrid A*论文解析(1)
- 时间 ,空间 ,物质
- 1.1为什么选择序列模型
- Boost.Asio基础(五) 异步编程初探
- html做自我介绍模板,应聘自我介绍模板简短
- JavaScript — json文件的读取与写入
- 【NISP一级】3.3 边界安全防护设备
- 神秘邻居把我的信息卖给了诈骗团伙
- python 区块链开发教程_Python区块链教程(一)
- comsol兼容服务器系统,comsol 云服务器
- 【AI应用】NVIDIA Tesla T4的详情参数
- 【pingce360】传小米平板MIPAD采用MTK8125四核 或售999元
- VS Code + Tex Live + SumatraPDF配置LaTeX反向搜索(持续更新)
- linux 关闭zombie进程
- 我的世界服务器商店系统指令,我的世界自动商店指令 | 手游网游页游攻略大全...
热门文章
- 冯提莫与斗鱼“好聚好散”复制一个当红女主播要迈过多少难关?
- Win10怎么关闭开机启动项
- mac 苹果电脑恢复 Recovery HD;进不去恢复模式;
- Windows10 最新版官方iso镜像(截至2021/02)win10 2009(20h2)
- gitter 卸载_最佳Gitter渠道:材料设计
- Decorate 模式
- vue3 ts版本深度拷贝功能推荐ts-deepmerge
- “小糊涂“为何携手”无穷小”飞进大学校园
- 群辉监控Surveillance Station不支持H265解决方案(解决群辉不支持的摄像头)
- syswow64删除文件_win7系统Syswow64文件夹有什么作用?