zoukankan      html  css  js  c++  java
  • JS中的apply、call、bind区别

    apply、call、bind 用法

    1:作用

    改变函数运行时的上下文,即改变this的指向问题。

    xxxFunction.call(this,arg1,arg2,arg3);
    xxxFunction.apply(this,[arg1,arg2,arg3]);
    xxxFunction.bind(this,arg1,arg2,arg3);

    2:区别

    apply或call方法,那么this指向他们的第一个参数,apply的第二个参数是一个参数数组,call的第二个及其以后的参数都是数组里面的元素,就是说要全部列举出来;

    bind与apply、call最大的区别就是:bind不会立即调用,其他两个会立即调。如果多次调用bind,那么多出来的次数都是无效的

    3: Demo

    function runSetTimeoutFn(fn){
        setTimeout(fn,2000)
    }
    var name = 'global name';
    var obj = {
        name:'web',
        say:function(str){
            console.log(str + ':' + this.name);
        }
    }
    var say =obj.say;
    runSetTimeoutFn(say.call(null,"hello"));  // 立即运行  hello:global name
    runSetTimeoutFn(say.bind(null,"hello"));  // 2s后运行  hello:global name
    runSetTimeoutFn(say.call(obj,"hello")); // 立即运行  hello:web
    runSetTimeoutFn(say.bind(obj,"hello")); // 2s后运行  hello:web
  • 相关阅读:
    继承和多态的纠错
    面向对象的七个设计原则
    C#中简单的继承和多态
    体验套餐管理系统
    项目经理评分(评价)
    考勤信息(员工打卡)
    Python中的进制转换
    Python常用模块
    Tornado中异步框架的使用
    Tornado框架的简单使用
  • 原文地址:https://www.cnblogs.com/weboey/p/9014673.html
Copyright © 2011-2022 走看看