zoukankan      html  css  js  c++  java
  • 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;
  • 相关阅读:
    微信公众号 sign类
    serlvet HttpServletRequest
    servlet setCharacterEncoding setHeader 设置字符区别
    java 读取word
    java 使用Java生成word文档
    java io 读取写文件
    异步Promise及Async/Await可能最完整入门攻略
    React和Vue组件间数据传递demo
    Vue基础指令集锦
    vue 关于数组和对象的更新
  • 原文地址:https://www.cnblogs.com/lhl66/p/8018165.html
Copyright © 2011-2022 走看看