首页 » JavaScript » 第五章 head/全局对象

第五章 head/全局对象

2016-09-26 10:10:05阅读(488)

5.1 head/全局对象概要

JavaScript代码本身必须包含在对象内部。例如,在web浏览器环境中编写JavaScript代码时,JavaScript被包含在window对象内,并在其内部执行。这个window对象被认为是”head”对象。JavaScript的所有实现都需要使用一种head对象。

myFunction = function(){};
console.log('myFunciton' in window);//true

! head对象是JavaScrit环境中可用的最高作用域/上下文。

5.2 head对象内的全局函数

decodeURL()
decodeURLComponent()
encodeURL()
encodeURLComponent()
evail()
isFinite()
isNaN()
parseFloat()
parseInt()

5.3 head对象与全局属性,全局变量

不要将head对象与包含在全局作用域的全局属性或全局变量混淆在一起。head对象是一个包含所有对象的对象。术语”全局属性”或”全局变量”指的是直接包含在head对象内部的值,而不是在其他的对象的特定作用域内。这些值被认为是全局性的,因为不管代码当前在哪里执行,根据作用域规则,所有的代码都可以访问(通过作用域链)这些全局属性/变量。

var foo = 'bar';
var myFuntion = fucntion(){var foo2 = 'bar');
var myApp = function(){
    var run = function(){
        console.log(foo)
    }();
}
myApp();    //foo
//如果console.log(foo2),则显示undefined.因为它不在全局作用域内了

全局作用域的任何东西都可用于任何作用域,从而获得”全局变量”或”全局属性”的头衔。

5.4 引用head对象

通常有两种引用 head 对象的方法。第一种方法是简单地引用赋予 head 对象的名称(浏览器中的window);第二种方法是在全局作用域中使用 this 关键字。

var foo = 'bar';
windowRer1 = window;
windowRer2 = this;
console.log(windowRer1, windowRer2);
console.log(windowRer1.foo, windowRer2.foo);

5.5 head对象是隐式的,通常不显式引用

var foo = {
    fooMethod: function(){
        alert('foo'+'bar');
        window.alert('foo'+'bar');
    }
}

! 采用显式在性能方面所需要的代价稍高一些。即使我们知道想要的属性在全局作用域中,但如果只依靠作用域链,并避免显式的引用head对象,会更快。

UML 图:

可以渲染序列图:

Created with Raphaël 2.1.0张三张三李四李四嘿,小四儿, 写博客了没?李四愣了一下,说:忙得吐血,哪有时间写。

最新发布

CentOS专题

关于本站

5ibc.net旗下博客站精品博文小部分原创、大部分从互联网收集整理。尊重作者版权、传播精品博文,让更多编程爱好者知晓!

小提示

按 Ctrl+D 键,
把本文加入收藏夹