在确定身份时我们需要问两个问题: 1,我是谁;2,我在那
一,考虑一下情景
-
问:我是学生,我在哪(this = ?)?
答:学校 -
问:我是员工,我在哪(this = ?)?
答:公司 -
问:我是中国人,我在哪(this = ?)?
答:中国 -
问:我去参加运动会,挂着我们学校的名牌,我在哪(this = ?)?
答:xxx实验高中
二,再看javascript中的this指向
考虑下面的代码
// test01.js function fa(){ console.log(this) } var obja = { fb: function(){ console.log(this) } } var objb = {}; var fc = obja.fb; //执行 fa(); obja.fb(); fc(); fa.call(objb); fa.apply(objb);
1,fa()直接调用
这是告诉浏览器 函数fa是全局作用域(window)下的一个函数
,这时候去问 fa在哪?
,答:全局作用域, this = window
2,obja.fb()
这是告诉浏览器 函数fb是对象obja的一个属性
,这时候去问 fb在哪?
,答:obja, this = obja
3,fc()
fc是obja.fb的引用,这里有一点需要注意this的指向是在 执行阶段
确定的, fc和fa的执行方式是一样的,运动会比赛时穿同样的校服所以是同一个学校的
,问: fc在哪?
,答:和fa一样全局作用域, this = window
4,fa.call(objb) / fa.apply(objb)
进行跑步比赛时同一个学校的学生会被分到一个跑道上面去,在javascript中这个过程通过 call
、 apply
实现。运动员fa在跑道objb学校的跑道上面跑,问: fa在哪?
答:objb, this = objb
注:本文内容来自互联网,旨在为开发者提供分享、交流的平台。如有涉及文章版权等事宜,请你联系站长进行处理。