主要复习的内容:
1、变量作用域,函数提升(function hoisting)和执行环境对象
1.1:变量作用域:如果在函数中声明局部变量的时候,忘了写var关键字,则创建的是全局变量
1.2:提升
1.3:执行环境对象
2、解释变量作用域链(scope chain)以及为什么要使用他们
档在查找变量的定义时,JavaScript引擎首先在局部执行环境对象上查找。如果没有定义,则跳出作用域链,到创建它的执行环境中去,并且在该执行环境对象中查找变量的定义,以此类推,指导找到定义或到达全局作用域为止。
3、使用原型(prototype)来创建对象
JavaScript对象是基于原型的(prototype-based)的,而很多其他语言都是基于类的(class-based)对象。
例子:
基于类:
public class Person(){ public int id; public String name; public String sex; public Person(){} public Person(int id,String name,String sex){ this.id = id; this.name = name; this.sex = sex; } } Person zhangsan = new Person(1,"张三","男");
过程:
1、创建类
2、定义类的构造函数
3、实例化对象
基于原型:
var proto = { id : 0, name : '', sex : '' }; var person = function(id,name,sex){ this.id = id; this.name = name; this.sex = sex; } person.prototype = proto; var zhagnsan = new person(1,'张三','男');
过程:
1、定义原型对象
2、定义对象的构造函数
3、将构造函数关联到原型
4、实例化对象
4、编写自执行匿名函数
一个非常简单的例子:
(function(){ // do something console.log('something...'); })();
没有去调用,但是执行了。这里只是个简单的例子,关于自执行匿名函数有很多知识点。
5、使用模块模式和私有变量
以上是一个简单的模块化例子,把计算功能的模块都放在了一起,在需要的时候进行调用。
6、探索闭包的乐趣和好处
闭包