日期:2014-05-16  浏览次数:20426 次

javascript 原型模式

?

?要想理解closure,最好是写一些代码,或是看一些例子。Closure提供了封装(encapsulation)

?

function myClosure(){

???? var date = new Date();

????

???? //nested function

???? return function(){

?????????? return date.getMilliseconds();

???? }

}

?

即使是当myClosure中的匿名函数(closure)返回,但是date变量仍然驻留在内存中,而不想普通的函数执行完成后就被garbage collection回收了。这里把myClosure看作是一个容器,而datenested function被看做是这个容器中的元素。

?

另外一种实现方式:

var myClosure2 = function(){

???? var date = new Date();

???? var myNestedFunc = function(){

?????????? return date.getMilliseconds();

???? }

???? return {// revealing modular pattern

?????????? foo: myNestedFunc

???? }

}

?

var bar = new myClosure2();

console.log(bar.foo());

?

?

定义变量?

?

标准方式定义变量

var? str = “Hello World”;

如果定义多个变量的话,可以采用:

var str1 = ‘hello’,

?????? str2 = ‘world’,

?????? str3 = ‘foo bar’;

?