• call、apply/bind的区别和用法(简单粗暴的解释)


    var obj1={
     name:"bob",
     age:20    
    }
    
    var obj2={
     name:"coco",
     age:22
    }
    
    function getAge(){
     console.log(this.age)
    }
    
    var age = 50;
    
    getAge(); //50 等价window.getAge();
    
    getAge.call(obj1) //20 //相当于callback
    getAge.apply(obj2)//22 //让函数服务于不同的对象;
    
    call和apply的区别
    
    var str = {
      name:"wow",
      age:"18",
      search:function(sex,addr){
        console.log(this.name+ "和性别" + sex + "和地址" + addr )
      }
    }
    
    var str1 = {
      name:20
    }
    
    var str2 = {
      name:23
    }
    
    str.search.call(str1,"男","江西")     //20和性别男和地址江西
    str.search.apply(str2,["女","湖北"])  //23和性别女和地址湖北
    总结:区别就是apply传参是数组;
    
    call继承函数对象的属性:
    function Person(){
     this.name = "bow",
     this.like = "吃东西"
    }
    
    function Son(){
     Person.call(this); //等价于Person();
     this.stre = "你好"
    }
    var aa = new Person();
    console.log(aa);
    var bb = new Son();
    console.log(bb)
    bind使用
    var name = "name -g" var obj = { name:"bob" getName:function(){ console.log(this.name); //动态绑定,运行时,是谁做的。 } } obj.getName();//输出bob var fn = obj.getName; fn(); //等价于window.fn();输出"name -g"; var fn1 = obj.getName.bind(obj); fn1();//输出bob;
  • 相关阅读:
    第二次冲刺第六天
    第二次冲刺第五天
    第二次冲刺第四天
    Java多线程学习篇(三)Lock
    Java多线程学习篇(二)synchronized
    Java多线程学习篇(一)
    codeforces 895D
    模运算的乘法逆元
    codeforces 889B
    codeforces 878C
  • 原文地址:https://www.cnblogs.com/lhl66/p/8018165.html
Copyright © 2020-2023  润新知