Javascript中的this关键字
2010-09-14 13:23:59 来源:WEB开发网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;
}
};
在使用的时候是这样的:
Tags:Javascript this 关键字
编辑录入:爽爽 [复制链接] [打 印]更多精彩
赞助商链接