0%

725_call,apply,bind总结

<script>
      //call方法:
      //1、调用函数并修改this指向,也能传递参数
      //2、可以实现继承
      function fn(x, y) {
        console.log(this);
        console.log(x + y);
      }

      let o = {
        name: "我的",
      };
      fn.call(o, 1, 2);

      function Father(name, sex, age) {
        this.name = name;
        this.sex = sex;
        this.age = age;
      }

      function Son(name, sex, age) {
        Father.call(this, name, sex, age);
      }
      var son = new Son("刘德华", "男", 18);
      console.log(son.age);

      //apply方法:
      //1、调用函数并修改this指向,也能传递参数
      //2、传递的参数必须是数组形式的
      console.log("-----------------------------");
      var arr = [99, 15, 25, 36, 87];
      var max = Math.max.apply(Math, arr);
      console.log(max);

      //bind方法:
      //1、可以改变this指向但不调用函数
      //2、不改变原来的函数,返回的是一个新函数
      console.log("-------------------------------");
      function f(a, b) {
        console.log(this);
        console.log(a + b);
      }
      let p = { mingzi: "卢航" };
      f(1, 2); //window  3
      f.bind(p, 1, 2)(); //{ mingzi: "卢航" }  3
    </script>