• call()与apply()传参需要注意的一点


    call()与apply()是用来改变函数体内的this指向,第一个参数是调用函数的母对象,他是调用上下文,函数体内通过this来获得对它的引用,换句话说就是第一参数===函数中的this。

    但是如下示例:

    function a () {
        alert (this);
    }
    a.call (null);
    a.call(undefined);
    a.call();

    根据定义,上面应该弹出什么呢?是 null undefined  undefined  么?

    然而并非如此,

    所以“第一个参数是调用函数的母对象”是有条件的,并不是万金油

    1、在ES5的严格模式中,无论传入的是null还是undefined,严格按照定义来,即“第一个参数是调用函数的母对象”

    a.call (null);//null
    a.call(undefined); //undefined
    a.call();//undefined

    2、在非严格模式即ES3中,传入的是null、undefined或不传入参数时,都会用全局对象来代替

    a.call (null);//[Object window]
    a.call(undefined); //[Object window]
    a.call();//[Object window]

    apply同上。

  • 相关阅读:
    Vue--vue-Router
    Vue--vue中的组件、组件绑定事件和数据、私有组件、子组件,父子组件参数互传
    CF 631C report
    生日Party 玄学多维DP
    HDU-6376 度度熊剪纸条
    CF 1012C Dp
    CF 997A
    HDU-1051 一个DP问题
    偶尔间看到,来开心一下
    合并石子
  • 原文地址:https://www.cnblogs.com/xiexiaobao/p/5629280.html
Copyright © 2020-2023  润新知