WEB开发网
开发学院网页设计JavaScript Javascript中的this关键字 阅读

Javascript中的this关键字

 2010-09-14 13:23:59 来源:WEB开发网   
核心提示: varPerson=Class.create({initialize:function(name){this.name=name;},say:function(message){alert(this.name+":"+message);}});varaPerson=ne

varPerson=Class.create({
  initialize:function(name){
    this.name=name;
  },
  say:function(message){
    alert(this.name+":"+message);
  }
});
varaPerson=newPerson("name1");
aPerson.say("hello1");

Person实际上是通过Class.create这个方法所返回的klass(klass是Class.create中的局部变量,是一个function),Class.create所传递的参数(initialize方法和say方法)传递到create方法中的properties数组中并且通过addMethods方法让klass的prototype拥有这些方法。那么最关键的地方也是最难以理解的地方是:klass中的this究竟是指的是什么。仔细想一想就不难得到答案,Person实际上就是klass,而我们在实例化Person对象的时候,是用了new关键词的:

varaPerson=newPerson("name1");

这就等价于

varaPerson=new klass("name1");

虽然klass在外面不能被访问到,但是这样能很轻易的说明问题,klass是一个类而不是简单的一个函数(我们看作如此,因为用了new关键字),那么klass中的this就指的是声明的实例,在这里就是aPerson,aPerson通过klass的prototype能够拥有initialize方法和say方法,在new的过程中,也会执行klass中的代码,所以initialize在实例化的时候会执行,即构造函数。(在klass里两个this都是指的aPerson,为什么还要通过apply调用一次呢?这主要是为了传递构造函数的参数,用apply方法可以将数目不定的多个参数通过数组方便的传到initialize方法中去。)

五、再分析几个例子

从别的文章里看到的例子,我在这里分析一下:

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

Tags:Javascript this 关键字

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