js中的call() apply() bind()的用法

call() apply() bind() 都是用来重定义this这个对象的,不能改变箭头函数中的this指向

bind方法多了一个括号,bind返回的是一个新的函数,必须调用才能够执行

html 复制代码
<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>call_apply_bind的区别</title>
</head>

<body>

</body>
<script>
  var name = '小王', age = 17
  var obj = {
    name: '小张',
    objAge: this.age,
    myFun: function () {
      console.log(this.name + "年龄" + this.age)
    },
    myFun2: function (fm, t) {
      console.log(this.name + "年龄" + this.age, "来自" + fm + "去往" + t)
    }

  }
  var db = {
    name: '小行家',
    age: 99
  }
  obj.myFun.call(db)
  obj.myFun.apply(db)  // 参数以数组的形式进行传递
  obj.myFun.bind(db)()

// 在参数传递中使用apply的时候参数是以数组的形式进行传递的  这三者传递惨淡胡对参数的类型没有限制
  obj.myFun2.call(db, '成都', '上海')
  obj.myFun2.apply(db, ['上海', '北京'])  // 参数以数组的形式进行传递
  obj.myFun2.bind(db, '北京', '拉萨')()
  // 不进行数据类型的限制
</script>

</html>
相关推荐
chenbingjie_c5 小时前
C++ 进阶核心知识点总结:模板、内存分区、new/delete、内存池
开发语言·c++
福兮说6 小时前
前端下载大文件,点了按钮半天没反应:fetch + blob 的三个问题和三种替代写法
前端·javascript·性能优化·文件下载
Escalating_xu7 小时前
【C 语言】深入理解指针(1·下):指针运算、野指针、assert 与传址实战
java·c语言·开发语言
实心儿儿7 小时前
Qt — Qt 事件
开发语言·qt
周杰偷奶茶7 小时前
【Java】数据类型与变量
java·开发语言
code斗7 小时前
Java数据结构:堆详解
java·开发语言·数据结构
重生之小比特7 小时前
【C++进阶】map和set
java·开发语言·c++
lie..8 小时前
30天从零开始学AI应用开发(Day 12):像产品一样稳:流式输出、报错重试、花钱控制
开发语言·人工智能·php
傻啦嘿哟8 小时前
Python的默认参数把我坑惨了,原来写[]和写None的区别这么大
开发语言·python·机器学习
DeepAgent8 小时前
AI Agent 工程实践(49):一次真实优化——从 Agent v1 到 v2
开发语言·人工智能·agent