当前位置:   article > 正文

js系列十二:this对象_原生js点击后输出this对象是什么

原生js点击后输出this对象是什么

前面我们已经讲过,当函数被调用执行时,变量对象会生成,这个时候,this 的指向会确定。因此首先要牢记一个重要的结论,当前函数的 this 是在函数被调用执行时才会确定的。如果当前的执行上下文处于函数调用栈的栈顶,那么这个时候变量对象会变成活动对象,同时 this 的指向确定。
正是由于这个原因,才导致一个函数内部的 this 到底指向谁是非常灵活并且不确定的,这也是 this 难以被正真理解的原因所在。例如下面这个例子

var a = 10;
var obj = {
	a: 20,
}
function fn() {
	console.log(this.a);
}
fn() // 10
fn.call(obj) // 20
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

通过 a 值的不同表现,我们可以知道this 分别指向了 window 和 obj

1 全局对象中的 this
在这之前变量对象的学习中曾提到过,全局对象的变量对象是一个比较特殊的存在,在全局对象中,this 指向他本身,因此相对简单,没有那么多复杂的情况需要考虑。

// 通过this 绑定在全局对象
this.a2 = 20;

// 通过声明绑定变量对象,但是在全局环境中,变量对象就是他本身
var a1 = 30;

// 仅仅只有变量赋值操作
a3 = 10;

// 输出结果
console.log(a1);
console.log(a2);
console.log(a3);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

2 函数中的 this
在上面这些例子当中,同一个函数中的 this 由于调用方式不同,this 的指向都是不同的,因此,this 最终指向谁

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/685944
推荐阅读
相关标签
  

闽ICP备14008679号