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方法一致。

  • 相关阅读:
    Opencv-Python 学习
    Python图片处理
    sae flask 微信公众平台开发
    Python 定位字符串
    Python检测IP合法 是否为公网IP
    Python requests 为pfsense 添加Routes
    lua-nginx-module 学习
    CDN 学习笔记
    教程
    2020-2021-1 20209327 《Linux内核原理与分析》第十二周作业
  • 原文地址:https://www.cnblogs.com/smdb/p/10766445.html
Copyright © 2011-2022 走看看