前端学习笔记之this指向

JavaScript中的this

this是JavaScript语言中的一个关键字。

它是函数运行时,在函数体内部自动生成的一个对象,只能在函数体内部使用。

总的来说,this就是函数运行时所在的环境对象。
函数不同的使用场景,this指向也会有所不同。

以下是我学习到的几种不同场景下this指向的不同

单纯的函数调用

var x = 1;
function show(){
	console.log(this.x);
}
show(); // 1

因为show函数,是全局函数,show函数运行时,this的环境对象是window,但是在严格模式下,this是undefined。

作为对象方法的调用

function show() {
 	console.log(this.x);
}

var x = 1;
var obj = {};
obj.x = 2;
obj.m = show;

obj.m(); // 2

将show函数赋值给obj的m,show函数运行时,this的环境对象是obj。

作为构造函数的调用

var x = 2;
function show() {
 	this.x = 1;
}

var obj = new show();
obj.x; // 1
x; // 2

所谓的构造函数,就是通过这个函数,生成一个新的对象。此时,this指向的是新的对象。
x的运行结果为2,表面全局变量x的值没有变。

call,apply等工具函数的调用

这些工具函数作用是改变函数的this指向。它的第一个参数就是改变后的调用这个函数的对象。因此,这里的this指的是第一个参数。

var x = 0;
function show() {
 	console.log(this.x);
}

var obj = {};
obj.x = 1; 
obj.m = show;
obj.m.show.apply() // 0

apply()的参数为空时,默认调用全局对象(window),因此最后一行代码的运行结果为0。

总结一句话,this用于访问当前方法所属的对象。

本文的内容,学习自阮一峰的个人博客,智能社的blue老师的公开课视频。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值