JavaScript学习总结——this指向

27 篇文章 0 订阅
24 篇文章 0 订阅

this指向可分为如下四种情况:

  1. 函数预编译过程 this ——> window
  2. 全局作用域里 this——> window
  3. call/apply 可以改变函数运行时this指向
  4. obj.func(); func()里面的this指向obj (谁调用方法,方法里的this指向谁)
var name = '222';
var a = {
	name: '111',
	say: function() {
		console.log(this.name);
	}
}
var fun = a.say;
fun(); 
a.say();
var b = {
	name: '333',
	say: function(fun) {
		fun();
	}
}
b.say(a.say);
b.say = a.say;
b.say();

第九行执行函数fun,因为第八行将a.say赋值给fun,而fun在全局执行,所以this现在的指向为window,故输出结果为’222’
第十行执行a.say,a对象调用方法,this指向a对象,输出结果为’111’
十七行,将a.say作为参数,调用b对象的say方法,虽然看起来适用于总结的第四种情况。可实际上,b对象的c方法并没有直接输出,而是执行作为参数的a.say,所以适用于第一种情况,输出’222’
十九行b对象调用方法,this指向b对象,输出结果为’333’

本文根据渡一教育JavaScript视频总结,有兴趣的可去b站搜索观看。
https://www.bilibili.com/video/av64563473?t=4640&p=24

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值