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 
     
  • 相关阅读:
    Log4Net二次封装
    jquery动态生成二维码添加自定义logo
    小程序map地图多点定位
    vue上传阿里云图片组件
    vue移动端地址三级联动组件(二)
    vue移动端地址三级联动组件(一)
    vue自定义轻量级form表单校验
    js中间件
    事件模型
    通过JS唤醒app(安卓+ios)
  • 原文地址:https://www.cnblogs.com/maycpou/p/12325357.html
Copyright © 2011-2022 走看看