• JS this,call和apply以及回调函数


    this

    this引用,引用的是一个对象,对象不同或函数调用方式的不同,this引用会根据代码的上下文语境自动改变引用对象的特性。

    引用规则

    1,在最外层代码中,this引用引用的是全局对象(windows)

    2,在函数内,this引用根据函数调用方式不同而不同

    1)在构造函数中,this引用的对象是构造函数生成的对象

    2)方法调用,this引用的是接受方对象

    3)appl和call调用,引用的对象由两个函数的参数指定

    4)其他方式调用,引用的是全局对象

    call和apply是Function对象的方法

    方法的定义

    call方法: 
    语法:call([thisObj[,arg1[, arg2[,   [,.argN]]]]]) 
    定义:调用一个对象的一个方法,以另一个对象替换当前对象。 
    说明: 
    call 方法可以用来代替另一个对象调用一个方法。call 方法可将一个函数的对象上下文从初始的上下文改变为由 thisObj 指定的新对象。 
    如果没有提供 thisObj 参数,那么 Global 对象被用作 thisObj。 

    apply方法: 
    语法:apply([thisObj[,argArray]]) 
    定义:应用某一对象的一个方法,用另一个对象替换当前对象。 
    说明: 
    如果 argArray 不是一个有效的数组或者不是 arguments 对象,那么将导致一个 TypeError。 
    如果没有提供 argArray 和 thisObj 任何一个参数,那么 Global 对象将被用作 thisObj, 并且无法被传递任何参数。

    简单来说就是有如下不同

    func.call(func1,var1,var2,var3)对应的apply写法为:func.apply(func1,[var1,var2,var3])


    回调函数(callback)

     function  a(callback){
          alert('a');
          callback();//或者是 callback(),  callback.apply(this)
    
       }
       function  b(){
           alert('b');
       }
    //调用
    a(b);

    但是多数时候回调函数是有参数的所以应该向下面这样来定义
    function  a(callback){
          alert('a');
          callback.call(this,'d');//或者是 callback(),  callback.apply(this)
    }
    //调用

    c(function(e){ alert(e); });




  • 相关阅读:
    .NET 4.0 中的契约式编程
    DELL安装Windows Server 2019
    Mysql 5.7.34免安装版本
    MQTT
    WPF属性
    WPF数据绑定
    git系列之(五)git stash 命令
    Vue.js
    git 对比两个分支差异
    TPL 之二 TransformBlock
  • 原文地址:https://www.cnblogs.com/fslnet/p/4457950.html
Copyright © 2020-2023  润新知