WEB开发网
开发学院网页设计JavaScript Javascript进阶 阅读

Javascript进阶

 2010-09-14 13:44:42 来源:WEB开发网   
核心提示: 如果大家对上述代码中this与闭包的用法有疑惑的话,可以继续往下看,Javascript进阶(3),讲到这里就不得不提及JavaScript的作用域(scope),所有的JavaScript代码都是在一个执行环境中被执行,由于是作为Ajax使用的,所以它提供的一些属性都是为了自定义参数使用

如果大家对上述代码中this与闭包的用法有疑惑的话,可以继续往下看。

讲到这里就不得不提及JavaScript的作用域(scope)。所有的JavaScript代码都是在一个执行环境中被执行,有自己的作用域。这部分内容相对来说比较复杂,读者有兴趣可以详细参考<Javascript 闭包>。

JavaScript中的this就是被调用对象的引用。形象的说,是当前执行环境的上下文对象;简单的说,就是函数的拥有者Owner(这点对理解Event Handling很重要)。

闭包并不是JavaScript特有的概念,Martin Fowler早些年就发表了一篇关于闭包的文章(中文版)。

闭包是具有闭合作用域 的匿名函数。简单来说就是在function内定义的function,內部的function可以存取外部function內定义的变量。

现在来看看上面说的那个例子:

1、定义了一个jx对象,由于是作为Ajax使用的,所以它提供的一些属性都是为了自定义参数使用的。

2、我们关注它的load方法:

 this.init();    // 对XMLHttpRequest对象进行初始化
 var ths = this; // 在这里把jx对象本身保存到ths中是为了onreadystatechange函数中可以正确使用到jx对象中的属性(否则onreadystatechange内部的this指向的是http对象而不是我们要使用的jx对象)。
 this.http.onreadystatechange = function () {
    if(!ths) return;
    var http = ths.http;
    if (ths.indicator)ths.indicator.style.display='';
    if (http.readyState == 4) {//4 = document loaded.
     if (ths.indicator)ths.indicator.style.display='none';
     if(http.status == 200||http.status==0) {
      ...... 
      if(ths.callback) ths.callback(result); // process
     }
     ......
    }
   } 

上一页  1 2 3 4 5 6 7  下一页

Tags:Javascript 进阶

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接