zoukankan      html  css  js  c++  java
  • 理解js中bind方法的使用

      提到bind方法,估计大家还会想到call方法、apply方法;它们都是Function对象内建的方法,它们的第一个参数都是用来更改调用方法中this的指向。需要注意的是bind 是返回新的函数,以便稍后调用;apply 、call 则是立即调用原函数 。而今天我们主要讲解bind方法的理解与使用。

    bind方法是EcmaScript5新增的方法,该方法在mdn上是这么介绍的:

      bind()方法创建一个新的函数(称为绑定函数), 当被调用时,将其this关键字设置为提供的值,在调用新函数时,在任何提供之前提供一个给定的参数序列。

     语法:

    fun.bind(thisArg[, arg1[, arg2[, ...]]])

      参数thisArg表示:当绑定函数被调用时,该参数会作为this的指向。当使用new 操作符调用绑定函数时,该参数无效。

      参数arg1, arg2, ...表示:当绑定函数被调用时,这些参数将置于实参之前传递给被绑定的方法。

    先来看个例子:

    this.name="jack";
    var demo={
    name:"rose",
    getName:function(){return this.name;}
    }
    
    console.log(demo.getName());//输出rose  这里的this指向demo

    var another=demo.getName; console.log(another())//输出jack 这里的this指向全局对象 //运用bind方法更改this指向 var another2=another.bind(demo); console.log(another2());//输出rose 这里this指向了demo对象了

    bind的应用

    可以对一个函数预设初始参数:

    function a(){
    return Array.prototype.slice.call(arguments);//将类数组转换成真正的数组
    }
    var b=a.bind(this,15,20)
    alert(b());//弹出 15,20
    var s=b(25,30);
    alert(s);//弹出 15,20,25,30
    
  • 相关阅读:
    flutter 网络请求以及数据处理
    flutter 布局 Expanded Stack Positioned
    异步|同步&阻塞|非阻塞
    Spring AOP 由浅入深
    Elasticsearch初探
    dubbo工作原理
    BeanFactory vs ApplicationContext
    Spring container vs SpringMVC container(webmvc container)
    Spring @Service生成bean名称的规则
    MySQL绿色版安装(mysql-5.7.12-win32)
  • 原文地址:https://www.cnblogs.com/rain-null/p/7462146.html
Copyright © 2011-2022 走看看