zoukankan      html  css  js  c++  java
  • JavaScript_call,bind,apply的区别

    call、apply、bind

    1、改变方法中this关键字并且将方法执行,bind 返回的是一个新的函数,你必须调用它才会被执行。

    2、call 、bind 、 apply 这三个函数的第一个参数都是 this 的指向对象。第二个参数的区别:

      * call 的参数是直接放进去的,第二第三第 n 个参数全都用逗号分隔,obj.myFun.call(db,'成都','广州');

      * apply 的所有参数都必须放在一个数组里面传进去 obj.myFun.apply(db,['成都','广州']);

      * bind 除了返回是函数以外,它 的参数和 call 一样。

    var name = '小王',age = 17;
    var obj = {
        name: '小张',
        objAge: this.age,
        myFun: function (fm, t) {
            console.log(this.name + " 年龄" + this.age + " 来自 " + fm + " 去往 " + t);
        }
    }
    var db = {
        name: '德玛',
        age: 99
    }
    obj.myFun.call(db,'成都','上海');     // 德玛 年龄 99  来自 成都去往上海
    obj.myFun.apply(db,['成都','上海']);      // 德玛 年龄 99  来自 成都去往上海
    obj.myFun.bind(db,'成都','上海')();       // 德玛 年龄 99  来自 成都去往上海
    obj.myFun.bind(db,['成都','上海'])();   // 德玛 年龄 99  来自 成都, 上海去往 undefined
  • 相关阅读:
    Guzz入门教程
    设计模式开题
    纪录idea不能创建class类问题(Cannot Create Class)
    dbrouter实现流程图
    记录一次concurrent mode failure问题排查过程以及解决思路
    程序员的自我修养
    CyclicBarrier之共享锁的理解
    sed选项详解(options)
    sed 范围查找
    Sed命令
  • 原文地址:https://www.cnblogs.com/chickenfarm/p/12575333.html
Copyright © 2011-2022 走看看