zoukankan      html  css  js  c++  java
  • js中call、apply、bind的区别

    call

    call 函数上的公共方法,主要是用来改变this

    • call的第一个参数,改变call前面函数中的this
    • 让call前面的函数执行
    • call方法中第二个及第二个以后的参数作为实参传给call前面的这个函数
    function a(){
        console.log(this)  // A 
        console.log(arguments) // [1,2,3] 这里说明下arguments是一个类数组,他有length有索引,但是不能使用数组的方法
      }
      a.call('A',1,2,3)
    
    function a(){
        this.A=1
      }
      function b(){
        a.call(this)
      }
      let c = new b()
      console.log(c.A)  // 1
    

    我们可以使用call改变父类的this,实现函数b继承函数a的私有属性

    apply

    apply和call方法使用一样。唯一不同的是,第二个参数传入的是一个数组,让apply前面的这个函数执行的时候是依次传入进去

    function a(q,w,e){
        console.log(this)  // A 
        console.log(q,w,e) // 1 2 3
      }
      let arr =[1,2,3]
      a.apply('A',arr)
    

    bind

    bind和call一样。唯一不同的是bind不会执行函数,且会返回一个改变this后的新的函数。我们可以利用这个特性克隆函数

     function a(){
         this.name='AAA'
      }
      let c = a.bind(null)
      console.log(c) // ƒ a
    
  • 相关阅读:
    js 获取表单和页面控件数据
    vue axios upload 多个文件
    vue antd axios 使用
    antd vue 修改modal弹窗样式
    线性回归的改进-岭回归
    线性回归
    00
    集成学习方法之随机森林
    决策树
    第十讲 让机器像人类一样学习--强化学习-----学习总结
  • 原文地址:https://www.cnblogs.com/mengxiangji/p/10403640.html
Copyright © 2011-2022 走看看