秒懂this指向问题

目录

引出问题

解析:

解题思路

参考文章


引出问题

今天做了一道牛客网的题,如下,问最后alert个啥

var color = 'green';
var test4399 = {
    color: 'blue',
    getColor: function(){
        var color = "red";
        alert(this.color);
    }
}
var getColor = test4399.getColor;
getColor();//函数test4399.getColor
test4399.getColor();

小伙伴们也可以先自行思考一下哈

答案是green,blue

解析:

var getColor = test4399.getColor;

这句话的意思就是已经把test4399的getColor属性赋值给了getColor

原理是:函数在js中既可以当作值传递和返回,也可以当作对象和构造函数

所以getColor就是

function(){
    var color = "red";
    alert(this.color);
}

相当于的是这个函数单独抽出来赋值给了getColor,而不是指向 test4399

并且这个时候,this指向的是window,所以访问this.color的时候,值就为green

解题思路

这题注意到的解题突破点有下面几个(哈也有联想的

  1. this指向问题

  2. 访问对象的属性

主要还是this指向问题有点搞不清楚(基础不够扎实

参考文章

彻底搞懂JavaScript中的this指向问题 - 知乎 (zhihu.com)

参考文章中注意到的几个知识点罗列一下

不管在什么地方使用this,它必然会指向某个对象,但关键是在JavaScript语言之中,一切皆对象,运行环境也是对象,所以说this的指向是动态的

this的指向为什么会发生改变,this指向的改变到底是什么时候发生的

运行环境改变了,this的指向也跟着动态变化

在JS中,数组、函数、对象都是引用类型,在参数传递时也就是引用传递

Q:引用传递是啥

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值