前言
该篇笔记主要记录关于this指向问题,方便自己理解的更加透彻,对知识点再次巩固,在帮助自己的同时也希望能够帮助带着问题来阅读的小伙伴,新手创作,请多指教!
文章目录
提示:以下是本篇文章正文内容,下面案例可供参考
一、this是什么?
Javascript中 this 关键字指的是它所属的对象,
它拥有不同的值,具体取决于它的使用位置和调用。下面我们就具体来讲解。
二、this的指向问题
- 在方法中调用:this指向的是所处方法的对象,this指的就是方法对象。
- 在函数调用下:在没有对象调用该方法时this指向全局对象(window),若有对象调用则this指向该对象。
- 在单独使用时:this指向全局对象。
- 在闭包中使用:如果内部函数没有使用箭头函数定义,则 this 对象会在运行时绑定到执行函数的上下文。
- 在call、apply调用下:this指向的时它们的第一个参数
- 在严格模式下:函数是没有绑定到this上,这时候this是undefined,如果单独使用this指向全局对象,
- 在事件中:this指向接收事件的HTML元素
1.在方法中调用时
代码如下(示例):
<script>
var name='222';
var a={
name:'111',
say:function (){
console.log(this.name);
}
}
a.say();//this指向a 结果为111
//因为a对象是say方法的所有者
</script>
这里可以看出this指向的就是对象a,因此打印出a里面的name值。
2.在函数中调用时
代码如下(示例):
<script>
var name='222';
var a={
name:'111',
say:function (){
console.log(this.name);
}
}
var fun=a.say;//这里是把function(){}赋值给了fun
fun();// 因为这里是没有对象调用
//所以this的指向是window, this.name的结果是222
</script>
以上可以看出当直接执行fun()时,this指向的是window,因此打印出name值为222,再看看第一个案例里面 a.say 打印的却是111,由此可以看出:在没有对象调用该方法时this指向全局对象(window),若有对象调用则this指