• JS中的call、apply、bind方法详解


    在 javascript 中,call 和 apply 都是为了改变某个函数运行时的上下文(context)而存在的,换句话说,就是为了改变函数体内部 this 的指向。
    JavaScript 的一大特点是,函数存在「定义时上下文」和「运行时上下文」以及「上下文是可以改变的」这样的概念。

    call()  apply()

    对于 apply、call 二者而言,作用完全一样,只是接受参数的方式不太一样 (apply的第二个参数是数组,call第二个参数查看如下第二个例子)。

    // apply
      function test () {
        console.log(this.name)
      }
      var obj1 = {
        name: '测试1'
      }
      var obj2 = {
        name: '测试2'
      }
      test.apply(obj1)   // 输入测试1
      test.apply(obj1)   // 输入测试2
    // call
      var arr = [1,2,3];
      Array.prototype.push.call(arr,6,7,8);  //参数是一个一个传的
      console.log(arr);                      //[1, 2, 3, 6, 7, 8]

    bind()

    bind方法和apply、call的作用也是差不多的,不同的是 apply、call 这两个方法是立即执行函数。

     // bind
      let obj1 = {
        name:'测试1'
      }
      let obj2 = {
        name:'测试2'
      }
    
      function test(){
          console.log(this.name);
      }
    
      let play = test.bind(one);  //这里并不会立即执行
      play();                     //所以 可以将这个方法 放到需要的地方 在执行
  • 相关阅读:
    学习进度(第十四周)
    学习进度(第十三周)
    程序员修炼之道阅读笔记03
    程序员修炼之道阅读笔记02
    学习进度(第十二周)
    冲刺进度条10
    冲刺进度条09
    冲刺进度条08
    寒假学习进度报告2
    寒假学习进度报告1
  • 原文地址:https://www.cnblogs.com/huancheng/p/12009491.html
Copyright © 2020-2023  润新知