美文网首页
对比call,apply,bind

对比call,apply,bind

作者: 9月的甜橙子 | 来源:发表于2021-09-08 09:17 被阅读0次
    var name ='小王' ,age=12;
    var obj={
      name: '小张',
      objAge: this.age,
      myFunc: function(){
        console.log(this.name +'年龄'+this.age);
      }
    }
    
    obj.objAge; // 12
    obj.myFunc() // 小张年龄 undefined
    

    小张年龄后面的那个this指向obj用于obj没有age关键字,所以undefined

    var fav='小王';
    function shows(){
      console.log(this.fav);
    }
    
    shows() // 小王
    

    上面这段代码中,全局声明的函数shows()的this是window;

    call()、apply()、bind()都是用来重定义this这个对象的

    var name ='小王' ,age=12;
    var obj={
      name: '小张',
      objAge: this.age,
      myFunc: function(){
        console.log(this.name +'年龄'+this.age);
      }
    }
    var db={
      name:'小李',
      age:99
    }
    obj.myFun.call(db);// 小李年龄 99
    obj.myFun.apply(db);// 小李年龄 99
    obj.myFun.bind(db)();// 小李年龄 99
    

    传参的情况下

    obj.myFun.call(db,'成都','上海');     // 小李 年龄 99  来自 成都去往上海
    obj.myFun.apply(db,['成都','上海']);      // 小李 年龄 99  来自 成都去往上海  
    obj.myFun.bind(db,'成都','上海')();       // 小李 年龄 99  来自 成都去往上海
    obj.myFun.bind(db,['成都','上海'])();   // 小李 年龄 99  来自 成都, 上海去往 undefined
    

    reference to https://www.runoob.com/w3cnote/js-call-apply-bind.html


    如果本文对您有帮助,请给我点赞哦~ 谢谢~

    相关文章

      网友评论

          本文标题:对比call,apply,bind

          本文链接:https://www.haomeiwen.com/subject/gftpwltx.html