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>
相关推荐
ssshooter5 小时前
看完就懂 useSyncExternalStore
前端·javascript·react.js
Live000007 小时前
在鸿蒙中使用 Repeat 渲染嵌套列表,修改内层列表的一个元素,页面不会更新
前端·javascript·react native
柳杉7 小时前
使用Ai从零开发智慧水利态势感知大屏(开源)
前端·javascript·数据可视化
球球pick小樱花7 小时前
游戏官网前端工具库:海内外案例解析
前端·javascript·css
喝水的长颈鹿7 小时前
【大白话前端 02】网页从解析到绘制的全流程
前端·javascript
用户14536981458788 小时前
VersionCheck.js - 让前端版本更新变得简单优雅
前端·javascript
codingWhat8 小时前
整理「祖传」代码,就是在开发脚手架?
前端·javascript·node.js
码路飞8 小时前
写了个 AI 聊天页面,被 5 种流式格式折腾了一整天 😭
javascript·python
Lee川8 小时前
优雅进化的JavaScript:从ES6+新特性看现代前端开发范式
javascript·面试
颜酱8 小时前
单调队列:滑动窗口极值问题的最优解(通用模板版)
javascript·后端·算法