global 、window、this

global和window什么关系,你会疑问吗?

BOM的核心对象是window,他表示浏览器的一个实例。在浏览器中,window对象有双重角色,它既是通过javaScript访问浏览器窗口的一个接口,又是ECMAScript规定的global对象。这意味着在网页中定义的任何一个对象、变量和函数,都以window作为其global对象,因此有权访问parseInt()等方法。 ——-引自《javaScript高级程序设计》


1>global

    JavaScript 中有一个特殊的对象,称为全局对象(Global Object),它
 及其所有属性都可以在程序的任何地方访问,即全局变量。
    在浏览器 JavaScript 中,通常 window 是全局对象, 而 Node.js中的
全局对象是 global,所有全局变量(除了 global 本身以外)都是 global 对
象的属性。
   global最根本的作用是作为全局变量的宿主。按照 ECMAScript 的定义,
满足以下条件的变量是全局变量:

在最外层定义的变量;
全局对象的属性;
隐式定义的变量(未定义直接赋值的变量)。

(1)global中常用的变量

__dirname:存放,在node.js中执行的js代码所在的绝对目录。
注意:前面有两个下划线。 如:console.info(__dirname);  h:\node

__filename:存放,在node.js中执行的js代码所在的文件全路径及文件名。
如:console.info(__filename);   h:\node\global.js

(2)global中常用的对象:console、process

process存放程序执行的一些相关信息

2>window

    在浏览器中,window对象有双重角色,它既是通过javaScript访问浏览器窗
口的一个接口,又是ECMAScript规定的global对象。

所有浏览器都支持 window 对象。它表示浏览器窗口。
所有 JavaScript 全局对象、函数以及变量均自动成为 window 对象的成员。
全局变量是 window 对象的属性。
全局函数是 window 对象的方法。
甚至 HTML DOM 的 document 也是 window 对象的属性之一


3>this

    this对象是在运行时基于函数的执行环境绑定的:在全局函数中,this等于
window,而当函数被作为某个对象的方法调用时,this等于那个对象。
(注意:不过,匿名函数的执行环境具有全局性,因此其this对象通常指向window。)

1)纯粹的函数调用
这是函数通常用法,属于全局调用。
2)作为对象方法的调用
作为某个对象方法调用,this指这个上级对象
3)作为构造函数调用
所谓的构造函数,就是通过这个函数生成一个新对象,this指这个新对象
4)apply调用
apply()是函数对象的一个方法,它的作用是改变函数调用对象,它的第一个参数表示改变后的调用这个函数的对象,this指着第一个参数。apply参数为空时默认全局的。

猜你喜欢

转载自blog.csdn.net/eatgirlhui_unique/article/details/56836921