zoukankan      html  css  js  c++  java
  • JS--理解call、apply和bind

    call、apply和bind

      call,apply是Function原型中的方法,它们的作用一样,区别在于传入参数的方式不同。

    call(thisArg, arg1, arg2...)

      传入的参数不固定,第一个参数用来指定函数内部this的指向,从第二个参数往后的所有元素参数依次传入被调用的函数

     

    apply(thisArg, argArray)

      可以传入两个参数,第一个参数用来指定函数内部this的指向,第二个参数是一个带有下标的集合(Array对象or类数组arguments),

      apply把这个集合中的元素依次传递给被调用的函数

     

    bind(thisArg, arg1, arg2...)

      传入的参数不固定,第一个参数用来指定函数内部this的指向,从第二个参数往后的所有参数依次传入被调用的函数

      创建一个函数实例,this会被绑定到传给bind函数的第一个参数上

    call、apply在实际开发中的应用

      改变被调用函数内部的this指向

      

    1 document.getElementById('div1').onclick = function () {
    2     var func = function () {
    3         console.log(this.id);
    4     }
    5     func();  //undefined
    6     func.call(this); //div1
    7 }

        上述代码第5行,函数func以普通函数调用的方式执行,函数内部的this会指向window

        代码第6行用call来修正函数func内部this的指向

    实现Function.prototype.bind函数

      借用其他对象的方法

  • 相关阅读:
    (转) 解析 char *p和 char[]
    Linux下C程序内存、内存对齐问题 (实战)
    关于子网划分的两个例子
    子网掩码与子网划分 (转载)
    A、B、C类地址及子网掩码学习笔记
    本机ip、127.0.0.1和0.0.0.0区别(转载)
    初识const
    流媒体协议
    i2c-tools的使用方法
    linux ——内存共享映射mmap和munmap
  • 原文地址:https://www.cnblogs.com/marton/p/10117011.html
Copyright © 2011-2022 走看看