• call、apply和bind的学习


    相似之处:
    1、都是用来改变函数的this对象的指向的。
    2、第一个参数都是this要指向的对象。
    3、都可以利用后续参数传参。

      var xw = {  name : "小王",gender : "男" age : 24, say : function() {console.log(this.name + " , " + this.gender + " ,今年" + this.age); }         

      var xh = {  name : "小黄" ,gender : "女", age : 18 }               

    调用xw.say(); //这个简单 打印出:小王,男,今年24

    那么如何用xw的say方法来显示xh的数据呢。这时候就可以用到call、apply、bind

    xw.say.call(xh);  //这时打印的就是:  小黄,女,今年18

    xw.say.apply(xh);

    xw.say.bind(xh)();

    这三句返回一样;

     bind比call和apply多了(),所以bind返回函数需要自己再执行调用一次,而bind和call都是对函数的直接调用;

    接下来我们看一下call和apply的区别:

      var xw = {  name : "小王",gender : "男" age : 24, say : function(city,school) {console.log(this.name + " , " + this.gender + " ,今年" + this.age+',在'+city+school); }         

      var xh = {  name : "小黄" ,gender : "女", age : 18 }      

    方法里带多个参数,

    xw.say.call(xh,'厦门','双十中学');

    xw.say.apply(xh,['厦门','双十中学']);

    xw.say.bind(xh,'厦门','双十中学')();  //小黄,女,今年18,在厦门双十中学

    或者xw.say.bind(xh)('厦门','双十中学');

     没带参数则是underfind;

    这里call和apply的区别主要在于带参的形式,可以记住apply是以array数组形式都是,和call是...arg形式,bind和call一样;

  • 相关阅读:
    Centos 卸载 MySQL
    Kafka体系架构、命令、Go案例
    Go 平滑重启(优雅重启)
    etcd集群数据迁移至新集群
    ubuntu 20.04使用TLSv1
    mybatis拦截器对SQL处理,数据权限逻辑控制
    java敏感字查找和替换
    SpringBoot自定义validation验证
    java使用druid解析器解析SQL语句
    国产数据库人大金仓 KingbaseES V8 R2 在 x86_64 Linux 安装过程
  • 原文地址:https://www.cnblogs.com/wangxiaoer5200/p/11981063.html
Copyright © 2020-2023  润新知