zoukankan      html  css  js  c++  java
  • call、apply、bind三者的区别


    先构造函数
    let xiaowang={ name1:"小王", age:"23", sex:"", say:function(){ console.log(this.name1+","+this.age+","+this.sex) } } let xiaohong={ name1:"小红", age:"18", sex:"" }
      调用xiaowang xiaowang.say()-----输出的是 小王,23,男

      用call方法 xiaowang.say.call(xiaohong)------输出的是 小红,18,女

      用apply方法 xiaowang.say.apply(xiaohong)------输出的是 小红,18,女

      用bind方法 bind返回的是函数所以后面加上() xiaowang.say.bind(xiaohong)()-----输出是 小红,18,女
    //所以call和apply都是对函数的直接调用,而bind方法返回的仍然是一个函数,因此后面还需要()来进行调用才可以。
      然后我们来看call和apply的区别
    let xiaoming={ name1:"小明", age:"23", sex:"", say:function(school,like){ console.log(this.name1+","+this.age+","+this.sex+","+school+","+like)
            }
        }
        let xiaoli={
            name1:"小丽",
            age:"18",
            sex:""
        }
        xiaoming.say.call(xiaoli ,"吕梁学院","芒果")------输出----小丽,18,女,吕梁学院,芒果
        xiaoming.say.apply(xiaoli,["运城学院","榴莲"])----输出----小丽,18,女,运城学院,榴莲
        // call后面的参数与say方法中是一一对应的,而apply的第二个参数是一个数组,数组中的元素是和say方法中一一对应的,这就是两者最大的区别。
  • 相关阅读:
    数组方法总结
    CSS3总结
    关于h5的一些知识整理
    如何去掉iview里面的input,button等一系列标签自带的蓝色边框
    CSS隐藏多余的文字
    百度搜索之历史搜索记录~
    transform相关~
    有关数组的相关知识~~
    [Javascript]js中所学知识点回顾总结
    js_随即生成多位验证码及变换颜色
  • 原文地址:https://www.cnblogs.com/aloneindefeat/p/10483883.html
Copyright © 2011-2022 走看看