zoukankan      html  css  js  c++  java
  • js中 .bind() .call() .apply()容易忽略的区别

    三个的功能大家应该都熟知,这里记录一下最基本也是最容易忽视的一个区别:

    .bind()方法调用之后不会立即调用改变this的函数,需要手动调用一下才能算是真的调用,如果没有调用之前传参,这时候函数会暂时保留传递过来的值,当作arguments中按下标排序的一个,当下次真正调用的时候,预传递的参数会占用其中一个形参。

    .call()和.apply()方法都会再调用该方法的时候直接调用了需要改变this的函数,传递的参数直接当作形参传递进去,不会保留。

    例如:

    function f(y, z){
        return this.x + y + z;
    }
    var m = f.bind({x : 1}, 2);
    console.log(m(3)); //6

    这里声明m的时候并没有调用函数f,所以传递进去的参数2会被当作函数的第一个形参y保留起来,再次调用m(3)的时候,3被当作第二个形参z处理。

  • 相关阅读:
    console.log眼见不一定为实
    播放器
    js变量
    js函数
    js数组
    设置默认浏览器
    this.$nextTick()用法
    进程理论+创建进程的两种方法+进程join方法+进程间数据相互隔离
    风险可视化项目记录1
    HTML笔记
  • 原文地址:https://www.cnblogs.com/xuchao-blogs/p/14446795.html
Copyright © 2011-2022 走看看