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的作用和区别相关推荐

  1. call apply bind 的作用和区别

    1.call apply bind 的作用和区别 作用: 都可以改变函数内部的this指向. 区别点: 1.call和apply会调用函数,并且改变函数内部this指向. 2.call和apply传递 ...

  2. call(),apply(),bind()的用法及举例

    通过学习call(),apply(),bind()的用法和区别,我们能更好的理解this及作用域的含义,为后面的编程打下基础. call()的用法: 调用一个函数,使其具有一个指定的this值和分别地 ...

  3. call,apply,bind的用法与区别

    1.call/apply/bind方法的来源 首先,在使用call,apply,bind方法时,我们有必要知道这三个方法究竟是来自哪里?为什么可以使用的到这三个方法? call,apply,bind这 ...

  4. JavaScript中的call,apply,bind区别及应用(包含手写call/apply/bind)

    目录 一.使用目的 二.三者分别是如何定义的及区别(摘自MDN) 三.在程序中收获 四.三者的具体应用 四.手写bind,apply,call 今天在读程序题的时候,遇到call,apply,bind ...

  5. JavaScript的call,apply和bind方法之间的区别

    by Rajat Saxena 通过拉贾特·萨克森纳(Rajat Saxena) JavaScript的call,apply和bind方法之间的区别 (The difference between J ...

  6. JavaScript中的call,apply,bind学习总结

    JavaScript 中的 call, apply, bind 这三个函数的作用和区别在各大论坛都被讨论了很多次了,但是我一直都还没来得及好好总结,这次正好看到了一个很不错的关于JavaScript ...

  7. call apply bind 深入了解

    不知其理,何以谈用 众所周知 call.apply.bind 的作用都是'改变'作用域,但是网上对这这'改变'说得含糊其辞,并未做详细说明,'改变'是直接替换作用域?谁替换谁?怎么产生效果?这些问题如 ...

  8. call,apply,bind,new实现原理

    在实际开发过程中,对于函数封装时,不确定外部是谁调用的,调用函数内部方法时,有可能是window调用这时就会报错,常使用call,apply,bind来绑定this指向. Function.proto ...

  9. bind函数作用、应用场景以及模拟实现

    bind函数 bind 函数挂在 Function 的原型上 Function.prototype.bind 创建的函数都可以直接调用 bind,使用: function func(){console ...

  10. JavaScript内置一些方法的实现原理--new关键字,call/apply/bind方法--前戏

    new关键字,call/apply/bind方法都和this的绑定有关,在学习之前,首先要理解this. 一起来学习一下this吧 首先.this是一个对象. 对象很好理解,引用类型值,可以实现如th ...

最新文章

  1. c语言s开头的函数以及作用,C语言函数大全-s开头-完整版.doc
  2. ue4 改变枢轴位置_【UE4地形】轻松实现UE4自动地貌和自动植被分布
  3. 【FFmpeg】FFmpeg 帮助文档使用
  4. mysql查询通过两个字段逆序
  5. ES6新特性之Generator函数
  6. Hybrid A*论文解析(1)
  7. 时间 ,空间 ,物质
  8. 1.1为什么选择序列模型
  9. Boost.Asio基础(五) 异步编程初探
  10. html做自我介绍模板,应聘自我介绍模板简短
  11. JavaScript — json文件的读取与写入
  12. 【NISP一级】3.3 边界安全防护设备
  13. 神秘邻居把我的信息卖给了诈骗团伙
  14. python 区块链开发教程_Python区块链教程(一)
  15. comsol兼容服务器系统,comsol 云服务器
  16. 【AI应用】NVIDIA Tesla T4的详情参数
  17. 【pingce360】传小米平板MIPAD采用MTK8125四核 或售999元
  18. VS Code + Tex Live + SumatraPDF配置LaTeX反向搜索(持续更新)
  19. linux 关闭zombie进程
  20. 我的世界服务器商店系统指令,我的世界自动商店指令 | 手游网游页游攻略大全...

热门文章

  1. 冯提莫与斗鱼“好聚好散”复制一个当红女主播要迈过多少难关?
  2. Win10怎么关闭开机启动项
  3. mac 苹果电脑恢复 Recovery HD;进不去恢复模式;
  4. Windows10 最新版官方iso镜像(截至2021/02)win10 2009(20h2)
  5. gitter 卸载_最佳Gitter渠道:材料设计
  6. Decorate 模式
  7. vue3 ts版本深度拷贝功能推荐ts-deepmerge
  8. “小糊涂“为何携手”无穷小”飞进大学校园
  9. 群辉监控Surveillance Station不支持H265解决方案(解决群辉不支持的摄像头)
  10. syswow64删除文件_win7系统Syswow64文件夹有什么作用?