zoukankan      html  css  js  c++  java
  • call、apply、bind的用法

    call、apply、bind的作用是为了改变函数运行时this的指向

    this就是当前行为执行的主体

    call

    call函数传入两个参数,第一个参数为对象,第二个及后面的参数用来传参。当第一个参数的列表为null或undefined时,默认指向window

    var arr = [1, 2, 3, 4, 5];
    var max = Math.max.call(null, arr[0], arr[1], arr[2], arr[3], arr[4])//89
    

    Eg:

    var obj = {
      message:"My name is:"
    }
    
    function getName(firstName,lastName){
      console.log(this.message + fisrtName + " " + lastName);
    }
    
    getName.call(obj,"Dot","Dolby");
    

    apply

    apply函数同样接收两个参数,第一个参数是要绑定的this的值,第二个参数是一个参数数组。当第一个参数为null、undefined的时候,默认指向window

    var arr = [1, 2, 3, 89, 46];
    var max = Math.max.apply(null,arr);
    

    apply传入的多个参数,会依次作为形参进入函数中,比如max函数无法处理一个数组,但却可以同时处理多个参数,这样就可以调用了。看看下面的例子

    Eg:

    var obj = {
    	message:"My name is:"
    }
    function getName(firstName,lastName){
      console.log(this.message,firstName + " " + lastName);
    }
    getNmae.apply(obj,["Dot","Dolby"]);
    

    bind

    bind函数也可以传入多个参数,指向要绑定的this的值。但值得注意的是,bind不会直接执行。需要使用括号调用才可以

    Eg:

    				 var obj = {
                msg: "this is a message"
            }
            function getName() {
                console.log(this.msg)
            }
    
            getName.bind(obj)();
    

    如果我们只用getName.bind(obj);是不会被调用的,只是绑定了this

  • 相关阅读:
    如何搭建SVN的客户端和使用
    SVN服务器的本地搭建和使用
    grep命令
    cat命令
    cut命令
    yum 命令
    XPath、XQuery 以及 XSLT 函数
    XPath 实例
    XPath 运算符
    XPath Axes(轴)
  • 原文地址:https://www.cnblogs.com/seanxushuo/p/11477975.html
Copyright © 2011-2022 走看看