搞清this的指向只需问两个问题
来源:互联网 发布:it机房温湿度标准 编辑:程序博客网 时间:2024/06/09 21:01
[javascript]搞清this的指向只需问两个问题
在确定身份时我们需要问两个问题: 1,我是谁;2,我在那
一,考虑一下情景
- 问:我是学生,我在哪(this = ?)?
答:学校 - 问:我是员工,我在哪(this = ?)?
答:公司 - 问:我是中国人,我在哪(this = ?)?
答:中国 - 问:我去参加运动会,挂着我们学校的名牌,我在哪(this = ?)?
答:xxx实验高中
二,再看javascript中的this指向
考虑下面的代码
// test01.jsfunction 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
总结
简单来说是在谁上调用就指向谁。
- 通过函数名直接调用
fa();fc()
,相当于是在window上面调用,this指向window; - 通过对象属性名调用
obja.fb()
,this 指向该对象 - 通过指定this的方式调用
fa.call(objb);fa.apply(objb)
,指定的是谁就指向谁
阅读全文
0 0
- 搞清this的指向只需问两个问题
- this的指向问题
- javascript 的 this 指向问题
- 关于this指向及其改变指向的问题
- IE9以下的this指向问题
- JavaScript的三种this指向问题
- js中this关键字的指向问题
- 关于javascript的this指向问题
- javascript中this的指向问题
- java中多态的this指向问题
- javascript中this指向问题的综合
- 理解js中this的指向问题
- JavaScript中this的指向问题
- JavaScript中this的指向问题
- 关于this的指向问题(通俗易懂)
- javascript中this对象的指向问题
- 关于函数中this指向的问题
- js中this的指向问题
- 程序员的一点经验
- 前端面试知识必备
- vim代码跳转工具ctags安装及使用
- 设计模式的艺术之道--工厂方法模式
- Centos 7安装禅道
- 搞清this的指向只需问两个问题
- matlab----标签图像分类训练工具
- dedecms修改templets模板文件夹名字
- <转载>eclipse:更改tomcat端口号方法
- 获取Tomcat部署路径的方法
- QT之paintEvent事件
- xftp上传文件状态错误
- Linux下一键安装禅道
- JAVAWEB第五天xml解析