js继承模式,js继承
web前端-js教程
真正意义上来说Javascript并不是一门面向对象的语言,没有提供传统的继承方式,但是它提供了一种原型继承的方式,利用自身提供的原型属性来实现继承。Javascript原型继承是一个被说烂掉了的话题,但是自己对于这个问题一直没有彻底理解,今天花了点时间又看了一遍《Javascript模式》中关于原型实现继承的几种方法,下面来谈谈JS中比较简单的继承方法,如果大家有不同意见,欢迎建议。员工评价调查系统源码下载,arm软件源 ubuntu,辽宁阜新爬虫店,php app教程,seo营销任务lzw
最基础的原型链继承在这里就不复述了,主要讲一下其他的继承模式。易语言挂起进程源码,vscode标记已修改的代码,ubuntu硬盘休眠,tomcat单机高并发,佛山爬虫店,php中date函数,seo从零开始学留痕,看动漫网站源码lzw
1.借用构造函数继承php无数据库留言板源码,vscode提示问题,ubuntu查看分区占用,tomcat 运营出错,sqlite实体模型,jquery 饼状图插件,前端框架react怎么用,爬虫灯罩价格,php 7安装,seo 空格,二维码在线生成网站源码,网页防右键,动网8.3门户模板,wifi认证页面源码,易语言怎么制作管理系统,h5游戏程序源码lzw
function Father (name) {this.name=name;}function Son (name) {Father.call(this,name); //在子类型中调用超类型的构造函数this.age=15;}var me=new Son("Su");好处:可以为子类型传递参数,如图中的name属性。
坏处:1.方法在构造函数中定义,无法复用。2.超类型原型中定义的方法对子类型是不可见的。
2.组合继承(综合原型链与构造函数)
//超类型构造函数function Father (name) {this.name=name;this.famMember=[];}//超类型构造函数原型方法Father.prototype.sayName=function () {alert(this.name);}//子类型构造函数function Son (name,age) {Father.call(this,name); //构造函数方法this.age=age;}Son.prototype=new Father(); //重写子类型原型对象Son.prototype.constructor=Son; //重写构造函数属性指向子类型Son.prototype.sayAge=function () {alert(this.age);} //重写原型对象后再加入方法var me=new Son("Su",15);me.famMember.push("dad","mom"); //子类型可以调用超类型构造函数内的方法var he=new Son("Li",14);alert(he.famMember); // []好处:不同的子类既可以拥有自己的属性,也可以使用相同的方法。
坏处:这种方法需要调用2次超类型的构造函数,同名的属性方法会被覆盖一次。
3.原型式继承 (类似Object.create())
function object (o) {function F () {}F.prototype=o;return new F();}var obj={}; //将obj对象传入作为新对象的原型。var me=object(obj);使用这种方法继承需要有一个对象作为原型对象,所以所有继承其的子类型的属性方法都是共用的。
ES5通过新增Object.creatr()方法规范了原型式继承。
4.寄生式继承 (可以设置私有方法的原型式继承)
function object (o) {function F () {}F.prototype=o;return new F();}var obj={}; //将obj对象传入作为新对象的原型。到这里都与原型式继承相同function creObj(o) { var clone=object(obj); clone.sayHi=function () { alert("Hi"); };return clone; }var me=creObj(obj);好处:这种方式弥补了原型式继承只有公有属性方法的缺陷,使子类型能有私有属性方法。
5.寄生组合式继承
function inherit (father,son) {var pro=Object(father.prototype); //创建超类型原型对象的副本pro.constructor=son;son.prototype=pro; //将副本作为子类型的原型对象}本方法用于弥补组合继承中属性方法覆盖的问题。
用上图代码代替组合继承中 Son.prototype=new Father(); 这段代码。这样只需调用一次父类型的构造函数,避免了创造多余不必要的属性方法,并且保持了原型链不改变,是一种理想的引用类型继承方法。
关于js继承模式先粗略给大家介绍这么多,相信对大家有所帮助,更多信息请继续关注脚本之家网站。