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>
相关推荐
环能jvav大师6 分钟前
基于R语言的统计分析基础:使用dplyr包进行数据操作
大数据·开发语言·数据分析·r语言
Jiaberrr9 分钟前
JS实现树形结构数据中特定节点及其子节点显示属性设置的技巧(可用于树形节点过滤筛选)
前端·javascript·tree·树形·过滤筛选
懒洋洋大魔王22 分钟前
7.Java高级编程 多线程
java·开发语言·jvm
=(^.^)=哈哈哈22 分钟前
Golang如何优雅的退出程序
开发语言·golang·xcode
学习使我变快乐24 分钟前
C++:用类实现链表,队列,栈
开发语言·c++·链表
茶馆大橘26 分钟前
【黑马点评】已解决java.lang.NullPointerException异常
java·开发语言
lmy_t30 分钟前
C++之第十二课
开发语言·c++
马剑威(威哥爱编程)33 分钟前
除了递归算法,要如何优化实现文件搜索功能
java·开发语言·算法·递归算法·威哥爱编程·memoization
我码玄黄1 小时前
THREE.js:网页上的3D世界构建者
开发语言·javascript·3d
MuseLss1 小时前
HashMap高频面试知识点
java·开发语言·哈希算法