posts - 59,comments - 0,views - 34725

(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就继承了定义函数的对象。

posted on   好久不见-库克  阅读(78)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示