博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于call/apply与bind的一点误解
阅读量:5142 次
发布时间:2019-06-13

本文共 702 字,大约阅读时间需要 2 分钟。

最近在重读《javascript高级程序设计》,读到函数的call和bind时,发现自己之前的理解一直都是错的。

下面就来理一理call/apply和bind的不同

window.color = 'red';var o = {    color: 'blue'}function sayColor() {    alert(this.color);}sayColor.call(o);  // blue

通过sayColor.call(o)调用时,结果弹出blue,这和以前理解一样,call/apply就是在特定作用域中调用函数(即call里面的参数就指代this)

然而sayColor.bind(o)调用时,结果返回的是sayColor函数,

function sayColor() {    alert(this.color);}

和call的实现并不一样,之前以为bind就是指定this,和call的区别只是不传参。

但是当调用bind()方法时,是创建一个函数实例,其中this值被绑定到参数。

所以只是生成了一个和原函数this不一样的函数,需要调用新生成的函数,才能得到效果

window.color = 'red';var o = {    color: 'blue'}function sayColor() {    alert(this.color);}var objectSayColor = sayColor.bind(o);objectSayColor();   // blue

转载于:https://www.cnblogs.com/u14e/p/5947711.html

你可能感兴趣的文章
maven的pom.xml用<exclusion>解决版本问题
查看>>
JSP—page指令
查看>>
NOIP的基本模板合集(2)
查看>>
openscales2.2 的初始缩放等级
查看>>
hdu 4310 Hero
查看>>
mac中使用vi修改二进制文件
查看>>
css3 box-sizing属性
查看>>
copy_from_user 详解
查看>>
spring-AOP(面向切面编程)-注解方式配置
查看>>
Sping
查看>>
UI design principle android 系统根据不同屏幕密度选择不同图片
查看>>
GridView 动态列上方添加相应的Combox等控件
查看>>
申请开发者账号
查看>>
oracle启动
查看>>
c++模板学习
查看>>
【转】MySQL Event
查看>>
[转]html5监听任何App自带返回键javascript事件
查看>>
mongodb数据备份与还原
查看>>
通俗理解LDA主题模型
查看>>
回射服务器-多路复用 select 01 (阻塞)
查看>>