• 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 
     
  • 相关阅读:
    ASP.NET(4):多语言的解决方案
    无题
    SIP 计时器的总结(转)
    一个Sip协议栈的实现方案
    通过拦截WCF消息进行身份栈传播
    从WPF控件拖放到Winform控件的注意事项
    一个用C#操作OpenLDAP的例子
    通过定制行为拦截WCF消息
    一个基于Prism的方案的介绍
    MVVM模式下附加属性的使用
  • 原文地址:https://www.cnblogs.com/maycpou/p/12325357.html
Copyright © 2020-2023  润新知