blog.programfan.info
新网站即将启用

[小心得]对JS的运行时概念的理解

今天在一网页看到下面这三段代码:

一、

window.name = "window";
      var run = function() {
        alert("My name is " + this.name);
      }
      run();

 

二、

 

window.name = "window";
object = {
  name: "object",
  run: function() {
    alert("My name is " + this.name);
  }
};
object.run();

三、

 

 

window.name = "window";
 object = {
   name: "object",
   run: function() {
     var inner = function(){
       alert("My name is " + this.name);
     }
     inner();
   }
 };
 object.run();

  在那篇博文中,博主这样介绍说“javascript是一门动态语言,最明显就是那个dynamic this。它一般都是作为函数调用者存在。在javascript,所有关系都可以作为对象的一个关联数组元素而存在。那么函数就是被掰成两部分储存于对象,一是其函数名(键),一是函数体(值),那么函数中的this一般都指向函数所在的对象。但这是一般而已,在全局调用函数时,我们并没有看到调用者,或者这时就是window。不过,函数声明后,其实并没有绑定到任何对象,因此我们可以用call apply这些方法设置调用者

 

  而我当时没有理解博主的意思,按我想的算出结果和实际结果总是相反,后来我自己想通了,然后和同事交流,他说我的想法是错误的,我不相信,于是写了一个个的小实例,然后我终于明白了。回头再看看博主的介绍,豁然开朗!我开始不理解是因为我是用编译型语言的方式来理解的,但同事的讲解和演示的实例清楚的说明了JS是一个解释型的语言。用同事的话说——“看JS代码,一定要注意它的运行时的概念”。回过头来看博主说的动态语言,有异曲同工之妙。

  这个this在你没执行前你根本不知道它代表什么,只有在它执行的那一瞬间,~~哈~~。

  当时我们写了好多的例子,我只把其中我认为最重要的一个写下来吧,剩下的功能和上面那个博主的代码是差不多的

 

window.name = "window";
      object = {
        name: "object", 
        run: function() {
          alert("My name is " + this.name);
        }
      };
      window.run = object.run;
      window.run();
      object.run();

 

 

代码引用网址:http://www.cnblogs.com/rubylouvre/archive/2009/11/13/1602122.html

posted @ 2010-11-24 16:20  Gordon Chao  Views(228)  Comments(0Edit  收藏  举报
www.programfan.info
新网站即将启用