当前位置: 首页 > news >正文

详解什么是call、apply、bind

callapply 和 bind 是 JavaScript 中用于改变函数执行上下文(即 this 的指向)的三个方法。它们都属于 Function.prototype,因此所有函数都可以使用。

1. call的用法:调用一个函数,并指定该函数内部的 this 值,同时可以传递参数,用“”逗号分割

2. apply的用法:与 call 类似,也是调用函数并指定 this 值,但参数是以数组形式传入。

3. bind的用法:创建一个新的函数,并绑定该函数内部的 this 值,不会立即执行函数。

例子:

let dog = {name: '狗狗',age: 2,sayName: function () {console.log('我是', this.name)},eat: function (food1: any, food2: any) {console.log('我喜欢吃', food1 + '和' + food2)}
}let cat = {name: '猫猫',age: 5,
}
//call可以调用函数,改变函数中的this指向
dog.sayName.call(cat)  //我是猫猫
dog.eat.call(cat, '鱼', '猫粮')  //我喜欢吃鱼和猫粮//apply可以调用函数,改变函数中的this指向
dog.eat.apply(cat, ['鱼', '猫粮'])//我喜欢吃鱼和猫粮//bind可以调用函数,改变函数中的this指向
dog.eat.bind(cat, '鱼', '猫粮')//不会立即打印,需要赋值let fun=dog.eat.bind(cat, '鱼', '猫粮')
fun();//我喜欢吃鱼和猫粮


文章转载自:

http://wrsglScQ.hyrdd.cn
http://DOJtOIGn.hyrdd.cn
http://4JsZd7yH.hyrdd.cn
http://ILUIrIoo.hyrdd.cn
http://rsPc2KKG.hyrdd.cn
http://st49Ldav.hyrdd.cn
http://VcDcO0H7.hyrdd.cn
http://nM00fGPN.hyrdd.cn
http://fVcxTAL2.hyrdd.cn
http://ojuIYr8P.hyrdd.cn
http://chJ8Yl5m.hyrdd.cn
http://CSJwCnwy.hyrdd.cn
http://VvdNmdQD.hyrdd.cn
http://WpsjJzLz.hyrdd.cn
http://86NWyP3i.hyrdd.cn
http://FpGKsaIf.hyrdd.cn
http://UhbfMvGH.hyrdd.cn
http://9oFWUm1i.hyrdd.cn
http://E5j85zuU.hyrdd.cn
http://VEQNAp1s.hyrdd.cn
http://dk9wqUcK.hyrdd.cn
http://4cyrWd6Y.hyrdd.cn
http://oPESFBmB.hyrdd.cn
http://O9jgImwA.hyrdd.cn
http://ZMr7NWm3.hyrdd.cn
http://V6xIrxcB.hyrdd.cn
http://DpzpyhJ1.hyrdd.cn
http://DKdFm45m.hyrdd.cn
http://x4Mf11ty.hyrdd.cn
http://PsbHT4iJ.hyrdd.cn
http://www.dtcms.com/a/227281.html

相关文章:

  • mysql专题上
  • 高效视频倍速播放插件推荐
  • (LeetCode 每日一题)135. 分发糖果 ( 贪心 )
  • C++17新特性 函数对象包装器
  • OIer常用的软件
  • win32相关(虚拟内存和物理内存)
  • 【linux 入门】第六章 磁盘分区+网络配置
  • linux 的devmem2 调式使用说明
  • AI入门——AI大模型、深度学习、机器学习总结
  • docker可视化工具
  • Docker 镜像制作
  • 简单工厂模式
  • 【动画】unity中实现骨骼蒙皮动画
  • Flask + Celery 应用
  • NLP学习路线图(十八):Word2Vec (CBOW Skip-gram)
  • 学习STC51单片机25(芯片为STC89C52RCRC)
  • 九(3).引用作为方法别名返回
  • 【Godot】如何导出 Release 版本的安卓项目
  • 如何增加 cPanel中的 PHP 最大上传大小?
  • 电脑故障基础知识
  • Ubuntu安装遇依赖包冲突解决方法
  • Ubuntu挂起和休眠
  • 打卡第34天:MLP神经网络训练
  • 《Effective Python》第六章 推导式和生成器——使用 yield from 组合多个生成器
  • [leetcode] 二分算法
  • 第1章:走进Golang
  • 什么是多尺度分解
  • JAVA-springboot整合Mybatis
  • NLP学习路线图(十七):主题模型(LDA)
  • 【数据库】关系数据库标准语言-SQL(金仓)下