美文网首页
this的指向

this的指向

作者: hudaren | 来源:发表于2018-08-07 14:20 被阅读0次

 this的指向在函数定义的时候是确定不了的,只有函数执行的时候才能确定this到底指向谁实际上this的最终指向的是那个调用它的对象

       情况1:如果一个函数中有this,但是它没有被上一级的对象所调用,那么this指向的就是window,这里需要说明的是在js的严格版中this指向的不是window,但是我们这里不探讨严格版的问题,你想了解可以自行上网查找。

         情况2:如果一个函数中有this,这个函数有被上一级的对象所调用,那么this指向的就是上一级的对象。.

         情况3:如果一个函数中有this,这个函数中包含多个对象,尽管这个函数是被最外层的对象所调用,this指向的也只是它上一级的对象

但也有特殊情况: 

情况4:

var o = {

    a:10,

    b:{

        a:12,

        fn:function(){

            console.log(this.a);//undefinedconsole.log(this);//window       

          }

    }

}varj = o.b.fn;

j();

这里this指向的是window,是不是有些蒙了?其实是因为你没有理解一句话,这句话同样至关重要。

  this永远指向的是最后调用它的对象,也就是看它执行的时候是谁调用的,例子4中虽然函数fn是被对象b所引用,但是在将fn赋值给变量j的时候并没有执行所以最终指向的是window


this一般指向的是当前被调用者,但也可以通过其它方式来改变它的指向,下面将介绍三种方式:

1.call() 方法

现在this就指向person了

2.apply() 方法

apply() 与call()非常相似,不同之处在于提供参数的方式,apply()使用参数数组,而不是参数列表

3.bind()方法

bind()创建的是一个新的函数(称为绑定函数),与被调用函数有相同的函数体,当目标函数被调用时this的值绑定到 bind()的第一个参数上

以上就是this指向的基本内容!

相关文章

  • this的指向和改变this的指向

    一、this的指向 普通函数调用 function fn(){ console.log(this) //thi...

  • this的指向

    this的指向在函数定义的时候是确定不了的,只有函数执行的时候才能确定this到底指向谁,实际上this的最终指向...

  • this的指向

    整理自: https://zhuanlan.zhihu.com/p/23804247 https://zhuanl...

  • this的指向

  • this的指向

    函数中的this是在运行时候决定的,而不是函数定义时全局环境中的this指window其他函数中的this指向调用...

  • this的指向

    如果是一般函数,this指向全局的对象window 在严格模式下“use strict”,this为undefin...

  • this的指向

    this的指向分为四大类: 一:作为对象的方法调用 二:作为普通函数调用 三:构造器调用 四:Function.p...

  • this的指向

    this永远指向最后调用他的那个对象。 构造函数本身是无法访问自身函数的,只有实例化才可以 求数组的最大值let ...

  • this的指向

    1、全局作用域:this指向window,严格模式下指向undefined; 2、上下文的this:this指向最...

  • this的指向

    This的指向问题一直是JavaScript的一大核心,很多人都是觉得了解了,但是又模模糊糊。简单概括就是,thi...

网友评论

      本文标题:this的指向

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