javascript学习笔记——变量与属性(4.6)

  javascript中变量与对象的属性有许多相似之处,其实在js中变量与对象属性在根本上是一致的。

1.全局对象(global object)

  js解释程序启动时,首先要做的是创建一个全局对象(在执行任何代码之前)。这个对象的属性是js程序的全局变量。当声明一个全局变量时,实际上定义了全局对象的一个属性。

js解释器以预定义了值的一些属性来初始化全局对象,如infinity,parseInt和Math属性,分别代表数字无穷大,predefined(预定义的) parseInt()方法,和预定义的Math 对象。

在top-level代码(例如,方法之外的js代码),可以用js关键词this来refer to全局对象。在方法内部this的用途有所不同,第八章将会详解。

在客户端js,window对象是浏览器窗口中所有js代码的全局变量。全局window对象具有一个自指向(self-referential)window属性可以被用来代替this指向全局对象。window对象定义核心全局属性,如parseInt与Math,也定义全局客户端属性,如navigator与screen。

2.局部变量:调用对象(call object)

全局变量是特殊全局对象的属性。局部变量是call object的属性。当方法体被执行时,函数参数与局部变量被存为这个call object的属性。为局部变量提供一个全然独立的对象是为了允许js在局部变量与全局变量重名覆盖时时保存局部变量。

3.js执行文本(execution contexts)

js解释器每次开始执行一个方法时,都为这个方法创建一个新的执行文本。单一js解释器可以在不同的全局执行文本中运行,而这些文本不必要全然独立,它们可以向前向后互相指向(refer back and forth to each other)。

安全问题后面讲到。

 

你可能感兴趣的:(JavaScript,浏览器)