JS实现继承的几种常见方法示例
本文阐述了几种常见的JS继承方式。分享给大家参考,如下:
1、原型链继承
!doctype html lang=' en ' head metacarset=' utf-8 ' title type chain inheritation/title/head dyscript/* * *优点:*实例既是父类的实例,也是子类的实例*可以访问父类或原型属性子类添加的原型方法*简单且易于实现*缺点:*无法实现多重继承*引用属性和原型对象的实例由所有子类共享* 创建子类实例时,参数不能传递给父构造函数*实例属性可以添加到Cat构造函数中的Cat实例中。 如果要添加原型属性和方法,它们必须在像new Animal()这样的语句之后执行。* **/函数Animal(name){ this . name=name;//属性this.sleep=function () {//实例方法console . log(this . name ' is sleep ')}//原型方法animal . prototype . eat=function(food){ console . log(this . name ' is eating ' food)};//原型链继承-核心:以父类的实例作为子类functioncat () {} cat的原型。prototype=new animal();cat . prototype . name=' cat ';var Cat=new Cat();console . log(cat);//猫。_proto_====Animal可以使用Animal//中名称属性的睡眠方法,也可以使用猫的进食方法。_proto_。_proto_,即动物//猫的原型法。_ proto _。_ proto _ is object console . log(cat . name)cat . eat(' fish ');cat . sleep();/脚本/正文/html运行结果:
2、结构继承
!doctype html lang=' en ' head meta charset=' utf-8 ' title structural inheritation/title/head dyscript/* * * construction inheritation相当于将父类的实例复制到子类(未使用prototype)*只能使用父类的属性和方法,不能继承原型属性和方法,所以cat不能使用eat方法* * */functionanimal (name) {this。name=name//属性this.sleep=function () {//实例方法console.log(this.name '正在休眠!');} }//原型法animal . prototype . eat=function(food){ console . log(this。‘名’就是吃:‘菜’;};函数Cat(name) { Animal.call(this,name);//猫可以用动物的//这个。name=name } var cat=newcat(' Tom ');console . log(cat);//只能使用Animal属性和实例方法,不能使用原型方法。//cat的_proto_(指向一个函数)是cat构造函数的_proto_。_proto_ is对象console . log(cat . name);//cat.eat('鱼');cat . sleep()/脚本/正文/html的运行结果:
3.组合遗传
!doctype html lang=' en ' head meta charset=' utf-8 ' title组合继承/title/head dyscript函数animal (name) {this。name=name这个。睡眠=功能(){控制台。日志(这个。名称“正在睡觉”);};} animal . prototype . eat=function(food){ console . log(this . name ' is eating ' food);}函数Cat(name) { Animal.call(this,name)} Cat . prototype=new Animal();//需要修复的构造函数也指向组合继承。Cat . prototype . constructor=Cat;//构造函数修改cat . prototype . show=function(){//可以在不影响父类console.log('11111 ')的情况下给子类的原型添加方法};var cat=新猫(' Tom ');console . log(cat);//cat可以直接使用animal //cat的属性和实例方法,proto就是Animal cat.proto_。_proto_ is eatcat。proto _。_ proto _ is对象console . log(cat . name);cat . sleep();cat . eat(' fish ')cat . show()/script/body/html的运行结果:
4.寄生组合遗传
!DOCTYPE html html lang=' en ' head meta charset=' UTF-8 '标题寄生组合继承/title/head discript函数动物(名称){这个。name=name这个。睡眠=功能(){控制台。日志(这个。'姓名'正在睡觉');} } //原型方法动物。原型。吃=功能(食物){控制台。日志(这个。'姓名'正在吃:' '食物);};函数猫(名字){ Animal.call(这个,名字);}///(function(){//创建一个没有实例方法的类var Super=function(){ };超级原型=动物原型;//吃控制台。原木(动物。原型);//构造方法还是动物可以使用吃方法吃的_原型_是对象/初始化这个实例把它作为子类(猫)的原型猫。prototype=new Super();//一般的话是新动物(猫)。原型。构造函数=Cat//Cat的构造器还是cat//})));var cat=新猫(“汤姆”);控制台。原木(猫。姓名);猫。sleep();猫。吃('食物')/脚本/正文/html运行结果:
感兴趣的朋友可以使用在线HTML/CSS/JavaScript代码运行工具:http://工具。JB 51。net/code/HTMljsrun测试上述代码运行效果。
更多关于Java脚本语言相关内容感兴趣的读者可查看本站专题: 《javascript面向对象入门教程》 、 《JavaScript错误与调试技巧总结》 、 《JavaScript数据结构与算法技巧总结》 、 《JavaScript遍历算法与技巧总结》 及《JavaScript数学运算用法总结》
希望本文所述对大家Java脚本语言程序设计有所帮助。
版权声明:JS实现继承的几种常见方法示例是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。