博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Javascript中this关键字
阅读量:4589 次
发布时间:2019-06-09

本文共 1354 字,大约阅读时间需要 4 分钟。

一般而言,在Javascript中,this指向函数执行时的当前对象。

1 var name = "Bob";   2 var nameObj ={   3     name : "Tom",   4     showName : function(){   5         alert(this.name);   6     },   7     waitShowName : function(){   8         setTimeout(this.showName, 1000);   9     }  10 };  11 12 nameObj.waitShowName(); 值得注意,该关键字在Javascript中和执行环境,而非声明环境有关:

 

var someone = {    name: "Bob",    showName: function(){        alert(this.name);    }};var other = {    name: "Tom",    showName: someone.showName}other.showName();  //Tom

 

this关键字虽然是在someone.showName中声明的,但运行的时候是other.showName,所以this指向other.showName函数的当前对象,即other,故最后alert出来的是other.name。

没有明确的当前对象时

当没有明确的执行时的当前对象时,this指向全局对象window。

By default, this refers to the global object.

为什么说是全局对象(the global object),因为非浏览器情况下(例如:nodejs)中全局变量并非window对象,而就是叫“全局变量”(the global object)。不过由于我们这片文章主要讨论的是前端开发知识,所以nodejs就被我们忽略了。

例如对于全局变量引用的函数上我们有:

var name = "Tom";var Bob = {    name: "Bob",    show: function(){        alert(this.name);    }}var show = Bob.show;show();  //Tom

你可能也能理解成show是window对象下的方法,所以执行时的当前对象时window。但局部变量引用的函数上,却无法这么解释:

var name = "window";var Bob = {    name: "Bob",    showName: function(){        alert(this.name);    }};var Tom = {    name: "Tom",    showName: function(){        var fun = Bob.showName;        fun();    }};Tom.showName();  //window

 

 

 

转载于:https://www.cnblogs.com/CooderIsCool/p/4736373.html

你可能感兴趣的文章
Python匿名函数详解
查看>>
python面向对象(六)之元类
查看>>
quartz.net插件类库封装(含源码)
查看>>
package.json中 npm依赖包版本前的符号的意义
查看>>
Cygwin下获取Android源代码
查看>>
C 自删除技术---批处理方式
查看>>
maven学习(下)利用Profile构建不同环境的部署包
查看>>
win8自带输入法如何切换全角、半角操作流程
查看>>
TensorFlow windows 安装(base anaconda)
查看>>
Percona XtraDB Cluster集群
查看>>
mybatis学习笔记1--HelloMybatis
查看>>
正则表达式全局匹配网址
查看>>
js多张图片合成一张图,canvas(海报图,将二维码和背景图合并) -----vue
查看>>
前端页面刷新与跳转
查看>>
笔记本链接公司内网(跨网段) ,然后保证wifi
查看>>
Httpd做应用代理
查看>>
如何用Jmter生成合法的手机号
查看>>
Jmeter生成正常的人名
查看>>
Jmeter 做压力测试步骤
查看>>
jmeter生成随机的四位数
查看>>