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 相关文章推荐
JavaScript 中的事件教程
Apr 05 Javascript
使用户点击后退按钮使效三行代码
Jul 07 Javascript
cnblogs中在闪存中屏蔽某人的实现代码
Nov 14 Javascript
js操作textarea方法集合封装(兼容IE,firefox)
Feb 22 Javascript
Javascript base64编码实现代码
Dec 02 Javascript
jquery使用remove()方法删除指定class子元素
Mar 26 Javascript
jquery实现的Accordion折叠面板效果代码
Sep 02 Javascript
KnockoutJS 3.X API 第四章之数据控制流with绑定
Oct 10 Javascript
详解Python中logging日志模块在多进程环境下的使用
Dec 26 Javascript
微信小程序 POST请求的实例详解
Sep 29 Javascript
Vue项目数据动态过滤实践及实现思路
Sep 11 Javascript
Smartour 让网页导览变得更简单(推荐)
Jul 19 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
Linux下将excel数据导入到mssql数据库中的方法
2010/02/08 PHP
PHP+MySQL存储数据常见中文乱码问题小结
2016/06/13 PHP
解决windows上php xdebug 无法调试的问题
2020/02/19 PHP
Javascript 遍历对象中的子对象
2009/07/03 Javascript
Javascript图像处理—亮度对比度应用案例
2013/01/03 Javascript
轻松创建nodejs服务器(10):处理上传图片
2014/12/18 NodeJs
JS实现至少包含字母、大小写数字、字符的密码等级的两种方法
2015/02/03 Javascript
jQuery选择器源码解读(六):Sizzle选择器匹配逻辑分析
2015/03/31 Javascript
正则表达式优化JSON字符串的技巧
2015/12/24 Javascript
通过Tabs方法基于easyUI+bootstrap制作工作站
2016/03/28 Javascript
javascript断点调试心得分享
2016/04/23 Javascript
jstl中判断list中是否包含某个值的简单方法
2016/10/14 Javascript
详解js产生对象的3种基本方式(工厂模式,构造函数模式,原型模式)
2017/01/09 Javascript
详解基于angular路由的requireJs按需加载js
2017/01/20 Javascript
浅谈react+es6+webpack的基础配置
2017/08/09 Javascript
微信小程序如何获取用户信息
2018/01/26 Javascript
Vue 路由切换时页面内容没有重新加载的解决方法
2018/09/01 Javascript
vue中的inject学习教程
2019/04/24 Javascript
详解在Angular4中使用ng2-baidu-map的方法
2019/06/19 Javascript
详解Vue-cli3.X使用px2rem遇到的问题
2019/08/09 Javascript
微信小程序分享小程序码的生成(带参数)以及参数的获取
2020/03/25 Javascript
Python简单日志处理类分享
2015/02/14 Python
解读Python中degrees()方法的使用
2015/05/18 Python
pygame实现简易飞机大战
2018/09/11 Python
python开启debug模式的方法
2019/06/27 Python
如何使用Python实现斐波那契数列
2019/07/02 Python
Python使用内置函数setattr设置对象的属性值
2020/10/16 Python
浅析移动设备HTML5页面布局
2015/12/01 HTML / CSS
Superdry瑞典官网:英国日本街头风品牌
2017/05/17 全球购物
学期自我评价
2014/01/27 职场文书
千手观音观后感
2015/06/03 职场文书
2016大学生就业指导课心得体会
2016/01/15 职场文书
MySQL空间数据存储及函数
2021/09/25 MySQL
使用python绘制横竖条形图
2022/04/21 Python
详解MongoDB排序时内存大小限制与创建索引的注意事项
2022/05/06 MongoDB
Go语言怎么使用变长参数函数
2022/07/15 Golang