zoukankan      html  css  js  c++  java
  • ES5-bind用法及与以前的apply和call

    当我们调用一个函数的时候,函数中的this一般是指向调用者的。但是我们其实可以在调用函数的时候,传入一个对象,让函数中的this指向我们传入的对象,而不是调用者本身。

    apply,call,bind都是用来干这件事的,只是具体的用法不一样。

    例:

    1.调用没有参数的函数时候apply,call用法一样

    var name = 'tom';

    var obj = {name:'jack'};

    function fun(){

      console.log(this.name);

    }

    fun();

    fun.call(obj);

    fun.apply(obj);
    输出:tom jack jack
    2.调用有参数的函数的时候,apply和call传入参数的方式不一样
        var name = 'tom';
        var obj = {name:'jack'};
        function fun1(age){
            alert(this.name+age);
        }
        fun1(11);
        fun1.call(obj,11);
        fun1.apply(obj,[11]);
    输出:tom11 jack11 jack11
    3.bind的用法是返回this指向改变后的函数,而不是像apply和call一样直接调用。所以bind一般用于修改回调函数的this
        var name = 'tom';
        var obj = {name:'jack'};
        function fun2(age){
            alert('bind'+this.name+age);
        }
        var fun3 = fun2.bind(obj);
        fun3(11);
    输出:bindjack11 
     
  • 相关阅读:
    truncate删除一个分区,测试全局索引是否失效
    DG环境恢复同步遇到报错ORA-00353ORA-00334以及ORA-00600[2619], [47745]
    继承
    智能指针unique_ptr
    explicit
    编译安装python3
    Linux读写执行权限(-r、-w、-x)的真正含义
    nginx入门之编译安装
    vim
    1.yum下载 mysql及授权
  • 原文地址:https://www.cnblogs.com/maycpou/p/12325357.html
Copyright © 2011-2022 走看看