zoukankan      html  css  js  c++  java
  • apply,all,bind的区别

    这三个都是用来改变this指向的

    call() 和apply()的第一个参数相同,就是指定的对象。这个对象就是该函数的执行上下文。call()和apply()的区别就在于,两者接收的参数不一样。call的传参是这样的:

    fun.call(a,'wang mu'),apply的传参是这样的fun.apply(a,['wangmou']),bind的传参:fun.bind(a)('wang mu'),bind返回的时候仍然是一个函数,我们在调用的时候进行传参。bind不能立即执行,apply,call可以立即执行

    var a={
    user:' wang mu',
    fn:function(){
    console.log(this.user)
    }
    }
    var b = a.fn;
    b.call(a)
    

     

    var a={
    user:' wang mu',
    fn:function(){
    console.log(this.user)
    }
    }
    var c= a.fn;
    c.apply(a)
    

      

    var a={
    user:' wang mu',
    fn:function(){
    console.log(this.user)
    }
    }
    var d = a.fn;
    var e = d.bind(a)
    e()
    //当输入d的时候你可能想d.bind(a)就可以直接输出了,可是结果确没有,也说明bind确实是稍后执行,all,apply是立即执行

    bind会创建一个新函数,称为绑定函数

    bind() 方法和前两者不同在于: bind() 方法会返回执行上下文被改变的函数而不会立即执行,而前两者是直接执行该函数。他的参数和call()相同。他是直接改变这个函数的this指向并且返回一个新的函数,之后再次调用这个函数的时候this都是指向bind绑定的第一个参数。bind传餐方式跟call方法一致。

  • 相关阅读:
    vue04-动画、组件
    vue02—— 动画、组件、组件之间的数据通信
    webpack使用
    Promise
    css 尾巴
    js尾巴
    Python字符串格式转换
    CentOS 6.5下Redmine的安装配置
    gem Errno::ECONNRESET: Connection reset by peer
    MySQL几个重要的目录
  • 原文地址:https://www.cnblogs.com/smdb/p/10766445.html
Copyright © 2011-2022 走看看