js中this指向

this指向

1. 普通函数this指向window

 function fn() {
 	console.log(this)
 };
 fn();//window

2. 构造函数this指向调用它的实例

 function Star() {};
 Star.prototype.a = function() {
	console.log(this)
};
 var obj = new Star();
 obj.a();//obj

3. 对象的方法调用

 var o = {
 	fn: function() {
 		console.log(this);
 	}
 }
 o.fn();//o

4. 事件绑定方法

绑定事件函数this指向的是函数的调用者btn这个按钮对象

var btn = document.querySelector('button');
btn.onclick = function() {
	console.log(this);//btn
}

5. 定时器函数

定时器函数this指向window

setTimeout(function() {
	console.log(this);//window
},1000)

6. 立即执行函数

立即执行函数this指向的是window

(function() {
	console.log(this);//window
})();

7. 箭头函数

箭头函数的this是在定义函数时绑定的,不是在执行过程中绑定的。简单的说,函数在定义时,this就继承了定义函数的对象。

var obj = {
	fn1: function() {
		setTimeout(function(){
			console.log(this);//window
		}, 100)
	},
	fn2: function(){
		setTimeout(() => {
			console.log(this);//obj
		}, 100)	
	}
}
var a = 1;
function fn() {
	this.a = 2;
	return () => {
		console.log(this.a);//2
	}
}

8.嵌套函数
对象里面的函数方法,如果是对象直接包含那么它的this指向该对象,如果是嵌套的函数它的this指向window

var obj = {
	fun: function() {
		console.log(this);//obj
		function count(){
			console.log(this);//window
		}
		count();
	}
}

9.匿名函数

匿名函数的执行环境是the window

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值