JavaScript中的全局对象介绍


Posted in Javascript onJanuary 01, 2015

对于任何JavaScript程序,当程序开始运行时,JavaScript解释器都会初始化一个全局对象以供程序使用。这个JavaScript自身提供的全局对象的功能包括:

1.全局对象拥有一些常用的属性值。比如undefined、Infinity以及NaN。
2.全局对象拥有一些常用的属性对象。比如Math、JSON和Number对象均为该全局对象的属性。
3.全局对象提供一些全局函数供调用。比如isNaN()、isFinite()、parseInt()和eval()等。
4.全局对象提供一些全局构造器(constructor),也即全局类。比如Date()、RegExp()、String()、Object()和Array()等。

除了JS全局对象,对于运行在浏览器端的JavaScript程序,还有另一个全局对象:window。window全局对象提供了与当前窗口、页面有关的诸多属性与方法。除了这些与浏览器有关的全局属性和方法,window对象还封装了JS全局对象,并向外暴露JS全局对象的属性与接口;因此,当进行浏览器端JavaScript编程时,只需关心window全局对象即可。

对于JavaScript程序中的this,如果this不属于任何function,那么这个this就指代JS全局对象;如果是浏览器端运行的JS程序,那么这个this就指代window全局对象。

如果这个this属于某个function,那么this指代的就是调用该function的对象。若这种情况下function只是一个普通的函数,而不是某个类的方法,那么this的指代存在两种可能:

1.在ECMAScript 3标准,以及ECMAScript 5标准的非严格模式下,this指代全局对象。
2.在ECMAScript 5标准的严格模式下,this指代undefined。

根据这一特性,可以使用以下代码来判断当前是否处于严格模式:

var strict = (function(){return !this;}());

如果在JavaScript程序中创建了全局变量,那么这个全局变量会成为全局对象中的一个属性。

实验

var a = this;

console.log(a);//window object

console.log(a.outerWidth);//access window object's attribute

console.log(a.isNaN);//access JS global object's attribute
x = "test";

console.log(a.x);//access newly created global variable value
Javascript 相关文章推荐
将HTMLCollection/NodeList/伪数组转换成数组的实现方法
Jun 20 Javascript
js 调用本地exe的例子(支持IE内核的浏览器)
Dec 26 Javascript
js的匿名函数使用介绍
Dec 11 Javascript
JQuery球队选择实例
May 18 Javascript
javascript中类的定义方式详解(四种方式)
Dec 22 Javascript
jquery对复选框(checkbox)的操作汇总
Jan 13 Javascript
使用bootstrap typeahead插件实现输入框自动补全之问题及解决办法
Jul 07 Javascript
原生js实现类似fullpage的单页/全屏滚动
Jan 22 Javascript
Three.js 再探 - 写一个微信跳一跳极简版游戏
Jan 04 Javascript
vue 微信授权登录解决方案
Apr 10 Javascript
微信头像地址失效踩坑记附带解决方案
Sep 23 Javascript
使用pkg打包ThinkJS项目的方法步骤
Dec 30 Javascript
原生javascript获取元素样式
Dec 31 #Javascript
JavaScript分析、压缩工具JavaScript Analyser
Dec 31 #Javascript
jQuery中:last-child选择器用法实例
Dec 31 #Javascript
jQuery中:nth-child选择器用法实例
Dec 31 #Javascript
jQuery中:first-child选择器用法实例
Dec 31 #Javascript
jQuery中复合属性选择器用法实例
Dec 31 #Javascript
javascript实现左右控制无缝滚动
Dec 31 #Javascript
You might like
php 移除数组重复元素的一点说明
2008/11/27 PHP
IP攻击升级,程序改进以对付新的攻击
2010/11/23 PHP
PHP实现GIF图片验证码
2015/11/04 PHP
thinkPHP自定义类实现方法详解
2016/11/30 PHP
PHP+Mysql分布式事务与解决方案深入理解
2021/02/27 PHP
一个javascript图片阅览组件
2010/11/09 Javascript
js TextArea的选中区域处理
2010/12/28 Javascript
了解一点js的Eval函数
2012/07/26 Javascript
setTimeout和setInterval的深入理解
2013/11/08 Javascript
客户端js判断文件类型和文件大小即限制上传大小
2013/11/20 Javascript
javascript 中__proto__和prototype详解
2014/11/25 Javascript
JavaScript DOM操作表格及样式
2015/04/13 Javascript
js+cookies实现悬浮购物车的方法
2015/05/25 Javascript
浅谈jQuery 中的事件冒泡和阻止默认行为
2016/05/28 Javascript
Bootstrap编写导航栏和登陆框
2016/05/30 Javascript
Bootstrap实现登录校验表单(带验证码)
2016/06/23 Javascript
AngularJS框架的ng-app指令与自动加载实现方法分析
2017/01/04 Javascript
JS实现区分中英文并统计字符个数的方法示例
2018/06/09 Javascript
js中arguments对象的深入理解
2019/05/14 Javascript
javascript 关于赋值、浅拷贝、深拷贝的个人理解
2019/11/01 Javascript
详解Python中with语句的用法
2015/04/15 Python
python使用7z解压apk包的方法
2015/04/18 Python
Windows下的Jupyter Notebook 安装与自定义启动(图文详解)
2018/02/21 Python
python traceback捕获并打印异常的方法
2018/08/31 Python
pytorch多GPU并行运算的实现
2019/09/27 Python
解决pycharm 安装numpy失败的问题
2019/12/05 Python
Django实现随机图形验证码的示例
2020/10/15 Python
为什么UNION ALL比UNION快
2016/03/17 面试题
竟聘演讲稿范文
2013/12/31 职场文书
个人求职信范例
2014/01/29 职场文书
初中班级口号
2014/06/09 职场文书
财务会计专业求职信
2014/06/09 职场文书
护士长2014年度工作总结
2014/11/11 职场文书
计划生育汇报材料
2014/12/26 职场文书
收入证明怎么写
2015/06/12 职场文书
污染环境建议书
2015/09/14 职场文书