宝哥软件园

Javascript编程继承示例总结

编辑:宝哥软件园 来源:互联网 时间:2021-09-21

本文说明了Javascript编程的继承性。分享给大家参考,如下:

本文是阅读《Javascript 王者归来》后的总结。文章的详细章节在第21章P537。

一般来说,继承应该实现以下三层含义:

1)子类实例可以共享父类的方法;2)子类可以覆盖父类的方法或扩展新方法;3)子类和父类是子类实例的类型。

第一,结构继承法。

子类调用父类的构造函数进行维护,这种继承方法可以实现多重继承,但只能继承父类的公共方法,不能继承静态方法,不能使用instanceof验证实例。

function a(){ this . say=function(){ alert('新年快乐!');} }函数b(){ a.apply(this,arguments);} a . prototype . hook=function(){ alert('%^%^%^%');} var Ob=new b();alert(a的oB实例);//脚手架. say();//新年快乐ob . hook();//我看不懂2。原型继承法/经典继承法。

在这种继承方法中,通过复制现有的原型对象来重用行为,以便对象实例可以共享原型对象的属性。支持多重继承,继承原型静态方法,用instanceof验证实例。

function a(){ this . say=function(){ alert('新年快乐!');} }函数b(){ } a . prototype . hook=function(){ alert('%^%^%^%');} a . prototype . z=123;b . prototype=new a();var Ob=new b();alert(a的oB实例);//true alert(Ob . z);//123 ob . say();//新年快乐ob . hook();//% % % %三。实例继承方法/寄生构造函数模式。

构造函数无法继承类型的静态方法,原型继承不完善(核心对象的一些不可枚举的方法无法继承),而实例继承方法可以继承原始的核心对象或DOM对象,通过构造类型中的对象并返回来实现继承,因此验证的instanceof会为false,不支持多重继承。

函数a(){ var oA=new Array();OA . say=function(){ alert(' hello A!');}返回oA;} var obj=new a();alert(obj instance of a);//false obj . say();四.复制继承法。

此方法通过复制基类对象的所有可枚举属性和方法来模拟继承,因此它可以模拟多重继承,但是那些不能枚举的不能被继承。它可以继承父类的静态方法;

函数a(){ this . num=123;this.say=function(){ alert('新年快乐!');} } function b(){ this . extends=function(obj){ for(obj中的每个){ this[每个]=obj[每个];} } } var Ob=new b();ob . extends(new a());alert(a的oB实例);//false alert(Ob . num);//123 ob . say();//新年快乐v .杂交遗传法。

顾名思义,就是结合以上传承方式,取长补短,让传承更加完善。常见的结构原型继承:伪经典继承。

函数a(){ this . num=123;this.say=function(){ alert('新年快乐!');} }函数b(){ a . apply(this);} b . prototype=new a();b . prototype . z=123;var Ob=new b();alert(a的oB实例);//true alert(Ob . num);//123 ob . say();//新年快乐六。各种继承方法的优缺点。

希望本文对JavaScript编程有所帮助。

更多资讯
游戏推荐
更多+