有一个自己创建的新类 newClass, 还有一个需要继承的父类 supClass。
然后 newClass.prototype= new supClass();
新类就能继承父类的所有方法和成员变量了。为什么?
以前写过
(function($){
var newClass=function(){
this.a="aaaa";
this.b="bbbb";
//一些成员变量
this.count();
//执行自己定义的函数
}
newclass.prototype={
cout:function(){
return this.a+this.b;
}
}
window[newClass]=newClass;
})(jQuery);
是不是newClass.prototype= new supClass();
让新类的原型作为父类的this获得所有方法以及变量?
这里面涉及3个知识点:
原型和原型链
大概讲的就是JavaScript中每个对象都会有一个原型,自己本身找不到的属性会到原型中找,对象与对象之间可以发生关系,对象与原型之间同样可以发生关系~~~
《Javascript高级程序设计 3版》已经讲得很透彻了,看不懂猛戳下面链接:
汤姆大叔深入理解JavaScript系列5 - 强大的原型和原型链:
http://www.cnblogs.com/TomXu/archive/2012/01/05/2305453.html
JavaScript设计模式之原型模式
原型模式,是指用原型实例指向创建对象的种类,并且通过拷贝这些原型创建新的对象,看不懂猛戳下面链接:
汤姆大叔深入理解JavaScript系列42-设计模式之原型模式:
http://www.cnblogs.com/TomXu/archive/2012/04/16/2436460.html
言而总之就是把对象A作为对象B的原型,B就可以使用A的属性和方法了。
我看过后有总结:http://my.oschina.net/Karon/blog/499328
this
是不是newClass.prototype= new supClass();让新类的原型作为父类的this获得所有方法以及变量?
这里的this指的是调用者,就是new出来的那个(new newClass()),跟父类的this没什么关系。不然怎么实现代码:this.a+this.b,‘new supClass()’里面又没有这两个属性。
顺便说下,代码要规范:
这段代码里面有两处没写‘;’,分别是变量newClass的结尾处和newclass.prototype的结尾;
newclass.prototype的newclass应该是newClass(不然就报错了~)。