天下之事,必先处之难,而后易之。
君临
知我者谓我心忧,不知我者谓我何求

1、了解闭包(closure)必须知道,javascript的作用域(scope)问题:

javascript的作用域问题,即变量(函数-内部函数)的作用域问题。根据javascript的语法规则,变量(函数)声明在外部即视为全局变量(函数),可以直接在任何地方调用。

我们常用的变量分为全局变量和局部变量,而局部变量只能在函数内部调用。要实现外部调用局部变量的方法就会涉及到跨域问题,因此使用javascript的闭包函数来加以解决。

这里有几种关于变量作用域的调用写法:

(1)、改变全局变量

var name="peaty";

function getName(){ name='shine';  }  getName();//shine

(2)、调用函数内部变量

function number(){ var num=2;} number(num);//undified

(3)、函数内部也有全局变量--javascript语法原则(无var 声明的变量视为全局变量)

function say(){var s="you";} say(); alert(s);//you 

2、什么是javascript的闭包原则:

闭包原则就是把一些变量封装起来,与外部函数建立一个依赖,在全局变量与局部变量之间搭建桥梁,使外部可以轻松地访问到局部变量的函数或对象表达式。

3、使用闭包的目的

一个是前面提到的可以读取函数内部的变量,另一个就是让这些变量的值始终保持在内存中。

这样做就可以协调我们有些数据作为全局变量来控制,将一些有必要不清理的数据临时保存起来。

4、闭包函数的写法

(1)、作为内部函数实现闭包

 function fun(){

    var n=0;

    nAdd=function(){n+=1}

    function fun2(){
      alert(n);
    }

    return fun2;

  }

var result=fun(); 

result();//0

nAdd();

result();//1,对于fun2而言fun的所有属性均可见

5、闭包的运行原理

var name = "xxx";

  var object = {
    name : "My Object",

 

    getNameFunc : function(){
      var that = this;//上下文对象,全局化
      return function(){
        return that.name;//实现修改局部变量转换为全局变量
      };

          }

 

  };

alert(object.getNameFunc()());

 

 

posted on 2012-05-13 00:08  boonya  阅读(565)  评论(0编辑  收藏  举报

我有佳人隔窗而居,今有伊人明月之畔。
轻歌柔情冰壶之浣,涓涓清流梦入云端。
美人如娇温雅悠婉,目遇赏阅适而自欣。
百草层叠疏而有致,此情此思怀彼佳人。
念所思之唯心叩之,踽踽彳亍寤寐思之。
行云如风逝而复归,佳人一去莫知可回?
深闺冷瘦独自徘徊,处处明灯影还如只。
推窗见月疑是归人,阑珊灯火托手思忖。
庐居闲客而好品茗,斟茶徐徐漫漫生烟。

我有佳人在水之畔,瓮载渔舟浣纱归还。
明月相照月色还低,浅近芦苇深深如钿。
庐山秋月如美人衣,画堂春阁香气靡靡。
秋意幽笃残粉摇曳,轻轻如诉画中蝴蝶。
泾水潺潺取尔浇园,暮色黄昏如沐佳人。
青丝撩弄长裙翩翩,彩蝶飞舞执子手腕。
香带丝缕缓缓在肩,柔美体肤寸寸爱怜。
如水之殇美玉成欢,我有佳人清新如兰。
伊人在水我在一边,远远相望不可亵玩。