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 动态添加表格行 使用模板、标记
Oct 24 Javascript
编写js扩展方法判断一个数组中是否包含某个元素
Nov 08 Javascript
JS简单实现登陆验证附效果图
Nov 19 Javascript
JQuery1.8 判断元素是否绑定事件的方法
Jul 10 Javascript
JavaScript将Web页面内容导出到Word及Excel的方法
Feb 13 Javascript
Javascript中的数据类型之旅
Oct 18 Javascript
微信小程序入门教程
Nov 18 Javascript
详解微信小程序入门五: wxml文件引用、模版、生命周期
Jan 20 Javascript
浅谈js中startsWith 函数不能在任何浏览器兼容的问题
Mar 01 Javascript
vue中子组件调用兄弟组件方法
Jul 06 Javascript
jquery实现购物车基本功能
Oct 25 jQuery
JS 5种遍历对象的方式
Jun 16 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 GD绘制24小时柱状图
2008/06/28 PHP
PHP下escape解码函数的实现方法
2010/08/08 PHP
PHP命名空间(Namespace)简明教程
2014/06/11 PHP
百度地图API使用方法详解
2015/08/25 PHP
Thinkphp3.2.3整合phpqrcode生成带logo的二维码
2016/07/21 PHP
简单的pgsql pdo php操作类实现代码
2016/08/25 PHP
PHP设计模式(一)工厂模式Factory实例详解【创建型】
2020/05/02 PHP
PHP笛卡尔积实现原理及代码实例
2020/12/09 PHP
JavaScript中通过闭包解决只能取得包含函数中任何变量最后一个值的问题
2010/08/12 Javascript
基于jQuery的获得各种控件Value的方法
2010/11/19 Javascript
jquery写个checkbox——类似邮箱全选功能
2013/03/19 Javascript
JS实现关键字搜索时的相关下拉字段效果
2014/08/05 Javascript
解决jquery版本冲突的有效方法
2014/09/02 Javascript
使用jquery操作session方法分享
2015/01/22 Javascript
Javascript中prototype属性实现给内置对象添加新的方法
2015/05/14 Javascript
jQuery实现微信长按识别二维码功能
2016/08/26 Javascript
详解Angular2中的编程对象Observable
2016/09/17 Javascript
Bootstrap3 Grid system原理及应用详解
2016/09/30 Javascript
微信小程序 MD5加密登录密码详解及实例代码
2017/01/12 Javascript
基于angular实现三级联动的生日插件
2017/05/12 Javascript
BootStrap导航栏问题记录
2017/07/31 Javascript
ES6/JavaScript使用技巧分享
2017/12/14 Javascript
vue-cli3 项目从搭建优化到docker部署的方法
2019/01/28 Javascript
ES6知识点整理之Proxy的应用实例详解
2019/04/16 Javascript
如何根据业务封装自己的功能组件
2019/04/19 Javascript
Python ZipFile模块详解
2013/11/01 Python
Python实现曲线点抽稀算法的示例
2017/10/12 Python
python2使用bs4爬取腾讯社招过程解析
2019/08/14 Python
详解python对象之间的交互
2020/09/29 Python
python爬虫实现爬取同一个网站的多页数据的实例讲解
2021/01/18 Python
Python Selenium异常处理的实例分析
2021/02/28 Python
浅析CSS3 用text-overflow解决文字排版问题
2020/10/28 HTML / CSS
Fossil加拿大官网:化石手表、手袋、首饰及配饰
2019/04/23 全球购物
大学生个人自荐信
2014/02/24 职场文书
2019求职信大礼包
2019/05/15 职场文书
go 实现简易端口扫描的示例
2021/05/22 Golang