有一个自己创建的新类 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获得所有方法以及变量?
Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
js 里的继承实现直接确实有点麻烦,所以现在我都懒得写继承,直接用 TypeScript 翻译出来就好了
传送门 TypeScript 在线翻译
翻译出来
能看到这段代码吗?
newclass.prototype就是一个对象啊,
而对象可以通过字面量的方式创建,如上代码所示
还可以通过new操作符的方式,例如
newClass.prototype= new supClass();
现在newClass的实例对象的原型为new supClass()产生的对象,也就是newclass.prototype
new supClass()产生的对象的原型为supClass.prototype
Javascript中的继承是通过原型链来完成的。当一个
构造函数(楼主指的是类)建成后,会默认有个prototype属性,这个属性是个指针,指向一个对象,这个对象就是构造函数的原型对象,我们可以在这个原型对象上扩充属性和方法,让new出来的实例可以共享这些属性和方法。new supClass()这个操作后,会在堆空间中开辟一快空间,返回一个实例的栈地址newClass.prototype= new supClass(),让后把这个实例的地址赋给prototype属性这样通过
new newClass()出来的实例便会共享new supClass中的实例和方法,达到继承的作用。new操作符具体做了什么?
代码表示
newClass.prototype = new supClass()和上面等同