(1)在全局函数中,this指向的是window;
(2)当函数被作为某个对象的方法调用时,this就等于那个对象;
(3)匿名函数的执行环境是全局的,如下
举例匿名函数中的this 指向
var name='window的name'
var obj={
name:'对象的name',
getNameFuc:function(){
return function(){
return this.name
}
}
}
console.log('执行getNameFuc中的匿名函数:',obj.getNameFuc()())
// 打印出:执行getNameFuc中的匿名函数':window的name
打印是结果是the window。原因是,匿名函数的执行环境是全局的,而且this只在函数内部起作用。此时的this.name在匿名函数中找不到,
所以就从全局中找,找到后打印出来。
我们将上面的函数改装一下:
var name='window的name'
var obj={
name:'对象的name',
getNameFuc:function(){
var that=this
return function(){
return this.name
}
}
}
console.log('执行getNameFuc中的匿名函数2:',obj.getNameFuc()())
// 打印出:执行getNameFuc中的匿名函数2':对象的name
我们在getNameFun内将this赋给that,此时的that指向的是挂载(调用)的对象,即为object,
此时在匿名函数中调用that.name会在object上查找相应的数据,
而不是在全局上查找,最终打印出myobject。
(4)es6箭头函数的this
箭头函数:出现的作用除了让函数的书写变得很简洁,可读性很好外;最大的优点是解决了解决匿名函数和setTimeout和setInterval的this指向问题。
箭头函数的this定义:箭头函数的this是在定义函数时绑定的,不是在执行过程中绑定的。简单的说,函数在定义时,this就继承了定义函数的对象。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律