apply,call,bind的区别和功能

功能:

1、apply、call、bind的功能都是改变this指向

区别:
1、apply函数的第二个参数是调用函数的参数以数组形式展现
2、call函数的第二个及以后的参数,依次传入调用函数的参数

3、bind的第二个及以后的参数,依次传入调用函数的参数,同时bind函数调用完后只是绑定this并没有将函数进行调用,需要用其返回值进行调用

案例一:apply 

var name = "张三";
    const obj = {
      name: '李四'
    }
    function sayName() {
      console.log(this.name); // 李四
      console.log(arguments); // [1, 2, 3, 4, callee: ƒ, Symbol(Symbol.iterator): ƒ]
    }

    var currentName = sayName.apply(obj, [1,2,3,4]); //直接調用

案例二:call 

var name = "张三";
    const obj = {
      name: '李四'
    }
    function sayName() {
      console.log(this.name); // 李四
      console.log(arguments); // [1, 2, 3, 4, callee: ƒ, Symbol(Symbol.iterator): ƒ]
    }

    var currentName = sayName.call(obj, 1,2,3,4); //直接調用

 案例三:bind 

 var name = "张三";
    const obj = {
      name: '李四'
    }
    function sayName() {
      console.log(this.name); // 李四
      console.log(arguments); // [1, 2, 3, 4, callee: ƒ, Symbol(Symbol.iterator): ƒ]
    }
    var currentName = sayName.bind(obj, 1,2,3,4);
    console.log(currentName);
    // ƒ sayName() {
    //   console.log(this.name);
    //   console.log(arguments);
    // }
    currentName();

 

posted @ 2021-10-13 16:44  火烈鸟的梦  阅读(71)  评论(0编辑  收藏  举报