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

Javascript中的this关键字

 2010-09-14 13:23:59 来源:WEB开发网   
核心提示: objB是ClassB的一个实例,objB是如何拥有color属性和sayColor方法的呢?首先从实例化的代码看起:varobjB=newClassB("colorofobjB","nameofobjB");这里ClassB是个类,Javascri

objB是ClassB的一个实例,objB是如何拥有color属性和sayColor方法的呢?

首先从实例化的代码看起:

varobjB=newClassB("colorofobjB","nameofobjB");

这里ClassB是个类,ClassB中的this当然就是指的objB这个对象;

在ClassB中,前三行代码会用到ClassA,这时就把ClassA看作一个函数,而不是类。

我们如果直接调用ClassA这个函数,那么很显然,ClassA中的this指的就是window对象了,所以我们先将ClassA拷贝到objB的newMethod这个属性中(this.newMethod = ClassA),

然后再调用this.newMethod,这是这个方法的owener明显的已经成了this,而ClassB中的this在当前指的是objB,所以此时ClassA中(严格的说是newMethod中,因为这是拷贝过后的,跟ClassA已经是两个方法了)的this就是指的objB,这样在通过newMethod的调用,就给objB赋值了color属性和sayColor方法。用call和apply方法来实现继承实际上也是一个原理,call和apply可以看作是改变方法的owner的方法,而这里ClassB中的前三句代码也就是起这个作用的。

四、prototype1.6中的Class.create

prototype1.6中的Class.create方法大致如下:

varClass={
 create:function(){
  //……
  functionklass(){
   this.initialize.apply(this,arguments);
  }
  //……
  
  for(vari=0;i<properties.length;i++)
   klass.addMethods(properties[i]);
  
  //……
  returnklass;
 }
};

在使用的时候是这样的:

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

Tags:Javascript this 关键字

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