第五章 head/全局对象

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 张三 张三 李四 李四 嘿,小四儿, 写博客了没? 李四愣了一下,说: 忙得吐血,哪有时间写。

或者流程图:

Created with Raphaël 2.1.0 开始 我的操作 确认? 结束 yes no
  • 关于 序列图 语法,参考 [这儿][4],
  • 关于 流程图 语法,参考 [这儿][5].
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值