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>
相关推荐
永远有缘12 分钟前
四种编程语言常用函数对比表
java·开发语言·c++·python
Pocker_Spades_A13 分钟前
Python快速入门专业版(五十三):Python程序调试进阶:PyCharm调试工具(可视化断点与变量监控)
开发语言·python·pycharm
C++_girl13 分钟前
c++、java/python语言有什么区别?为什么c++更快?
java·开发语言·c++
彩妙不是菜喵14 分钟前
基于C语言上,面向对象语言:C++基础(学完C语言后再看)
c语言·开发语言·c++
脸大是真的好~30 分钟前
黑马JAVA+AI 加强07 Stream流-可变参数
java·开发语言
半桶水专家36 分钟前
Vue 3 插槽(Slot)详解
前端·javascript·vue.js
一枚前端小能手38 分钟前
🏗️ JavaScript类深度解析 - 从构造函数到现代特性的完整指南
前端·javascript
m0_736927041 小时前
使用 Python 将 PowerPoint 转换为 Word 文档
java·开发语言·后端·职场和发展·c#
杜子不疼.1 小时前
【Rust】路由匹配与参数提取:从 match 语句到 axum 的类型魔法
开发语言·后端·rust
浏览器API调用工程师_Taylor1 小时前
日报自动化实战:告别手动复制粘贴
前端·javascript·node.js