美文网首页
this指向

this指向

作者: light_follower | 来源:发表于2019-10-22 23:24 被阅读0次

this应该是常见面试题,本想着总结下,发现以下链接全面详细的解释了该知识点

  • 普通函数调用,此时 this 指向 window
  • 构造函数调用, 此时 this 指向 实例对象
  • 对象方法调用, 此时 this 指向 该方法所属的对象
  • 通过事件绑定的方法, 此时 this 指向 绑定事件的对象
  • 匿名函数、定时器函数, 此时 this 指向 window
  • call,apply,bind指的this 是谁就是谁。当第一个参数是null或者undefined时,this指向window。

https://www.cnblogs.com/hjson/archive/2019/01/11/10254555.html

apply call bind的区别

apply()第一个参数是this指向的对象,第二个参数是函数执行时要传入的参数 ,必须是一个数组

Function.apply(obj[,argArray])

  • 它的调用者必须是函数 Function,并且只接收两个参数,第一个参数的规则与 call 一致。
  • 第二个参数,必须是数组或者类数组,它们会被转换成类数组,传入 Function 中,并且会被映射到 Function 对应的参数上。这也是 call 和 apply 之间,很重要的一个区别。

call()第一个参数是this指向的对象,第二个参数是函数执行时要传入的参数

Function.call(obj,[param1[,param2[,…[,paramN]]]])

  • 调用 call 的对象,必须是个函数 Function。
  • call 的第一个参数,是一个对象。 Function 的调用者,将会指向这个对象。如果不传,则默认为全局对象 window。
  • 第二个参数开始,可以接收任意个参数。每个参数会映射到相应位置的 Function 的参数上。但是如果将所有的参数作为数组传入,它们会作为一个整体映射到 Function 对应的第一个参数上,之后参数都为空。

bind()第一个参数是this指向的对象,第二个参数是函数执行时要传入的参数

区别:
call、apply能够改变函数执行时的上下文,将一个对象的方法交给另一个对象来执行,并且是立即执行。区别参数不同。
bind是返回一个函数,而不是像call、apply立即调用,需要稍后调用才会执行

总结:
call 和 apply 的主要作用,是改变对象的执行上下文,并且是立即执行的。它们在参数上的写法略有区别。
bind 也能改变对象的执行上下文,它与 call 和 apply 不同的是,返回值是一个函数,并且需要稍后再调用一下,才会执行。

上次自测this知识点有涉及作用域,还需注意立即执行函数this指向的是window
var a = 1;
console.log(a); //1 a在全局作用域
function fire() {
    var a = 2;
    console.log(a); // 2 fire函数作用域
    function innerFire() {
        var a = 3;
        console.log(a); //3 此时打印输出a,a在innerFIre作用域。从自身作用域查找变量,未找到才网上查找
    }
    innerFire();
}
fire()

相关文章

  • this指向以及改变this指向

    改变this指向 call() apply() bind()

  • this指向

    this指向: 简单的一句话,谁调用的函数,this就指向谁 例子: var obj = { fun1: func...

  • this指向

    axios.get('/api', {params: {name: "kerwin",age:100}}).the...

  • this指向

  • this指向

    例 例

  • this 指向

    window.name = 'xiaoyu' var myObj = {name: 'seven',getName...

  • 指向

    平静的海托着翻飞的火焰,离开港口就有多少离人的泪还会再次上演,看着手上的钟表计算着离开的航线,肃穆的夜还有一串星火...

  • this 指向

    this执行全局环境中 this 指向 window this很重要的解析 https://segmentfaul...

  • this指向

    // 在普通函数中,函数的调用者是window对象,所以函数中的this指针指向的是window,通过访问this...

  • 指向

    飘飘荡荡,所有的事情都在直指一个方向 珍惜所有的付出,不在一处能回馈的也必会找到另一种方式。愿长长久久

网友评论

      本文标题:this指向

      本文链接:https://www.haomeiwen.com/subject/njncvctx.html