JS/JavaScript中概念区分:global对象、window对象、document对象

1、Global Object (全局对象, global对象)
①JavaScript 中有一个特殊的对象,称为全局对象(Global Object),它及其所有属性都可以在程序的任何地方访问,即全局变量。
② 全局对象是预定义的对象,作为 JavaScript 的全局函数和全局属性的占位符。通过使用全局对象,可以访问所有其他所有预定义的对象、函数和属性。全局对象不是任何对象的属性,所以它没有名称。
③ 在顶层 JavaScript 代码中,可以用关键字 this 引用全局对象。但通常不必用这种方式引用全局对象,因为全局对象是作用域链的头,这意味着所有非限定性的变量和函数名都会作为该对象的属性来查询。例如,当JavaScript 代码引用 parseInt() 函数时,它引用的是全局对象的 parseInt 属性。全局对象是作用域链的头,还意味着在顶层 JavaScript 代码中声明的所有变量,都将成为全局对象的属性。
④ 全局对象只是一个对象,而不是类。既没有构造函数,也无法用new实例化一个新的全局对象。
⑤ 实际上,ECMAScript 标准没有规定全局对象的类型,而在客户端 JavaScript 中,全局对象就是 Window 对象,表示允许 JavaScript 代码的 Web 浏览器窗口。浏览器把全局对象作为window对象的一部分实现了,因此,所有的全局属性和函数都是window对象的属性和方法。 
通俗化理解:
⑥ 《JavaScript高级程序设计》中谈到,global对象可以说是ECMAScript中最特别的一个对象了,因为不管你从什么角度上看,这个对象都是不存在的。从某种意义上讲,它是一个终极的“兜底儿对象”,换句话说呢,就是不属于任何其他对象的属性和方法,最终都是它的属性和方法。我理解为,这个global对象呢,就是整个JS的“老祖宗”,找不到归属的那些“子子孙孙”都可以到它这里来认祖归宗。所有在全局作用域中定义的属性和函数,都是global对象的属性和方法,比如isNaN()、parseInt()以及parseFloat()等,实际都是它的方法;还有就是常见的一些特殊值,如:NaN、undefined等都是它的属性,以及一些构造函数Object、Array等也都是它的方法。总之,记住一点:global对象就是“老祖宗”,所有找不到归属的就都是它的。
注意:“global这个单词本身是不可以直接访问的,本身就是一个概念,就是中文“全局”的英文原义,"Global Object" 翻译就是“全局对象”或“global对象”。比如global.Math.abs(1) 就是错误的。对全局对象的属性访问往往省略前缀,如Math.abs(1)就行了。而window对象是浏览器的JavaScript中具体存在的一个全局对象,是可以直接访问的。
来个栗子:

<scripttype="text/javascript">
console.log(this);
</script>

打开chrome浏览器的控制台,看到输出什么了吗?

window对象! 因为在全局作用域下,this指向全局对象。在浏览器中全局对象就是window对象。
来个第2个栗子:

<scripttype="text/javascript">
console.log(window);
</script>

打开chrome浏览器的控制台:

输出window对象,里面是各种属性的,如speechSynthesis等等....。说明 "window"这个单词在浏览器JS中代表的就是一个真实存在的全局的对象,可以直接访问window这对象的。
那么“global”这个单词呢?能直接访问吗?
再来第3个栗子:

<scripttype="text/javascript">
console.log(global);
</script>

运行结果:

显示 "Uncaught ReferenceError:global is not defined"。即global未定义,说明"global"这个单词不是一个默认的全局对象,不能在JS中直接访问的。正如前面所说,“global”只是中文”全局“的英语原义,不是一个对象,而是一个概念。
global的属性和方法:http://blog.csdn.net/qq_32758013/article/details/74781788
2、window对象
在全局作用域中声明的变量、函数都是window对象的属性和方法。
window对象是相对于web浏览器而言的,依赖于浏览器,在浏览器中全局对象指的就是window对象,可以说window对象是全局对象在浏览器中的具体表现。window它并不是ECMAScript规定的内置对象。内置对象的定义是:“由ECMAScript实现提供的、不依赖于宿主环境的对象,这些对象在ECMAScript程序执行之前就已经存在了。” 而window对象就是宿主对象。而全局对象是在任何环境中都存在的。window对象具体也就是指浏览器打开的那个窗口。如果HTML文档包含框架(frame 或 iframe 标签),浏览器会为 HTML 文档创建一个 window 对象,并为每个框架创建一个额外的 window 对象。
因此,在全局作用域中声明的所有变量和函数,就都成为了window对象的属性。来看下面的例子:

<scripttype="text/javascript">
var name = "chunlynn";
var color = "green"
function sayName(){
console.log(name);
}
function sayColor(){
console.log(window.color);
}
sayName(); //output:chunlynn
window.sayName(); //output:chunlynn
sayColor(); //output:green

window.sayColor(); //output:green

</script>
打开chrome浏览器的控制台:

这里定义了一个名为color 的全局变量和一个名为sayColor()的全局函数。在sayColor()内部,我们通过window.color 来访问color 变量,说明全局变量是window 对象的属性。然后又使用window.sayColor()来直接通过window 对象调用这个函数,说明全局作用域中声明的函数是window对象的方法。window对象一般是省略的
window对象的属性和方法(window的属性和方法比较多,这个链接可能说的不全仅供参考,具体的请在chrome后台中,输入window查看):http://www.cnblogs.com/zengwei/archive/2007/11/02/946520.html
3、document对象
document对象是window对象的一个属性,是显示于窗口内的一个文档。而window对象则是一个顶层对象,它不是另一个对象的属性。document可以理解为文档,就是你的网页,而window是你的窗口,就是你的浏览器包含的。
区别:
① window 指窗体。document指页面。document是window的一个属性。
② 用户不能改变 document.location(因为这是当前显示文档的位置)。但是,可以改变window.location (用其它文档取代当前文档)window.location本身也是一个对象,而document.location不是对象
③ W3C官方说明文档
Window对象:http://www.w3school.com.cn/htmldom/dom_obj_window.asp
Document对象:http://www.w3school.com.cn/htmldom/dom_obj_document.asp

this对象详解参考:

【1】JS/JavaScript中 this 关键字对象详解 - chunlynn的小屋 - CSDN博客
http://blog.csdn.net/chenchunlin526/article/details/78889301

JS/JavaScript中的概念区分:global对象、window对象、document对象相关推荐

  1. JS/JavaScript中解析JSON --- JSON.parse()、JSON.stringify()以及$.parseJSON()使用详解

    JS/JavaScript中解析JSON --- JSON.parse().JSON.stringify()以及$.parseJSON()使用详解 现在JSON格式在web开发中非常重要,特别是在使用 ...

  2. JS JavaScript中去除数组中重复元素的方法

    JS JavaScript中去除数组中重复元素的方法 感觉比较好理解的3种方法,总结一下,大家共同学习 方法一: Array.prototype.method1 = function(){ var a ...

  3. js(javascript)中__proto__和prototype解析

    为什么80%的码农都做不了架构师?>>>    __proto__是内部原型,prototype是构造器原型(构造器其实就是函数) 构造器的原型是一个对象 一.所有构造器/函数的__ ...

  4. JS/JavaScript中两个等号 == 和 三个等号 === 的区别

    JavaScript中两个等号 == 和 三个等号 === 的区别 一.概念 == 和 ===  (1)  "=="叫做相等运算符,"==="叫做严格运算符. ...

  5. JS(javascript)中this的几种用法实例详解

    本文主要介绍了javascript(以下简称js)中 this 用法,结合具体实例详细分析一下js中 this 的含义及使用方法,需要的朋友可以参考下. this 是 JavaScript 语言的一个 ...

  6. JavaScript入门3JS外置对象:Window、Document对象与DOM实例详解

    一)window对象 1.什么是DHTML? 1)DHTML是指操作HTML以创造各种动态视觉效果,是一种浏览器端的动态网页技术.       2)DHTML的功能:             ①动态改 ...

  7. java获取浏览器window对象,Window 浏览器窗口对象

    声明:本栏目所使用的素材都是凯哥学堂VIP学员所写,学员有权匿名,对文章有最终解释权:凯哥学堂旨在促进VIP学员互相学习的基础上公开笔记. Window 浏览器窗口对象 代表整个窗口Window属性如 ...

  8. js Javascript中调用对象内函数.(字符串函数名)

    对象['methodName'](args): window.οnlοad=function(){ //函数名字符串 var methodsName='plus'var x = cal[methods ...

  9. js (javascript) 中获取年月日信息

    获取年月日的所有信息: 直接使用date(); 如要取得 其他单独年月日时间 : 首先创建一个date对象,例如 : var d = new Date(); 随后例如取得当前年 ,使用: d.getF ...

  10. javascript中重要概念-闭包-深入理解

    在上次的分享中javascript--函数参数与闭包--详解,对闭包的解释不够深入.本人经过一段时间的学习,对闭包的概念又有了新的理解.于是便把学习的过程整理成文章,一是为了加深自己闭包的理解,二是给 ...

最新文章

  1. cache.config配置文件解读
  2. 码农的祖宗是个妹子?!信不信由你!
  3. python3 动态创建类对象并调用函数
  4. 原来小清新色调是这样调出来的~
  5. 美国计算机科学专业申请要求,美国计算机科学专业好申请吗?申请要求高不高...
  6. Class的getResource与ClassLoader的getResource路径/问题
  7. MySQL定义数据库对象之指定definer
  8. ffmpeg软硬件解码基础(总目录)
  9. iOS日常开发之frame和bounds的不同
  10. android禁用传感器,Android 系统 强制 禁用 距离传感器 方法
  11. Qt下载安装教程,windows10亲测可用,版本5.12.11
  12. 190502 Expressing Belief
  13. DHTMLET-Cascading Style Sheet 2.0
  14. 【里程碑】牛X的一塌糊涂,不需要目标板额外做任何代码,实时检测RTOS的任务执行情况,支持在线和脱机玩法
  15. 什么是Principle?能做什么?
  16. 如何让C语言黑窗口背景或者字体换个颜色呢?(背景和前景)
  17. 第一个PWA程序-聊天室
  18. 解决xampp安装后遇到的常见问题
  19. 写给零基础小白看的入门级 Java 基本语法,强烈推荐
  20. Java基础String类-字符串反转

热门文章

  1. 8 - 博客文章详情页
  2. U盘被写保护,无法格式化
  3. python滑稽代码
  4. java接口继承类_Java 类和接口的继承
  5. java里如何继承一个类_java如何继承类
  6. webpack之基础篇(四):webpack-dev-server介绍
  7. PMP复习整理考点篇【9】--- 实施定性风险分析与实施定量风险分析
  8. 关于虚拟机Ubuntu联网问题
  9. 企业微信群机器人入门
  10. ORCAD PSPICE 仿真学习