位置: 编程技术 - 正文

JS继承--原型链继承和类式继承(js继承原型链)

发布时间:2024-02-27

什么是继承啊?答:别人白给你的过程就叫继承。

为什么要用继承呢?答:捡现成的呗。

好吧,既然大家都想捡现成的,那就要学会怎么继承!

在了解之前,你需要先了解构造函数、对象、原型链等概念......

JS里常用的两种继承方式:

原型链继承(对象间的继承)类式继承(构造函数间的继承)

原型链继承:

利用proInherit(obj)方法,传入对象,就能实现对象的属性及方法的继承,这个方法不是内置方法,所以要自己定义,非常简单:

其中F()为一个临时的空的构造函数,然后将F()的原型设置为父对象,但是同时它又通过受益于_proto_链接而具有其父亲对象的全部功能。

链式图解:

类式继承:

下面我们来看看这个继承的关键方法:classInherit(Parent,Child)

分析一下这个方法:

首先创建一个空的构造函数F(),用其实例的_proto_属性来构建父类与子类的原型链。起到一个代理的作用,目的是为了防止C.prototype = P.prototype,这样会在子类实例化后修改属性或方法时候,连同父类一起修改。整体采用即时函数并且在闭包中存储F(),防止多次继承时候创建大量的空的构造函数,从而减少消耗内存。最后一行的意思是,由于原型链的关系,C的实例对象的constructor会指向P,所以重新设置。

链式图解:

这种方式虽然在实例的时候继承了原型方法,但是父类的属性无法继承,下面介绍一种复制继承,算是对类式继承的补充。

复制继承:

分析下copyInherit(p,c)

当一个值赋予一个变量时候,分为传值和传引用两种方式,当你父对象内属性包含数组类型或是对象类型时候, c[i] = toStr.call(p[i]) == astr ? [] : {};这一句会避免修改子对象属性而引起的父对象属性被篡改。

总结:

类式继承比较普遍,因为大家都比较熟悉这种构造函数方式,但是内存占用比较大。而原型式继承,占用内存比较小,但是包含数组,或者对象类型的克隆比较麻烦。复制继承简单,而且应用广泛。

推荐整理分享JS继承--原型链继承和类式继承(js继承原型链),希望有所帮助,仅作参考,欢迎阅读内容。

JS继承--原型链继承和类式继承(js继承原型链)

文章相关热门搜索词:js中的原型和原型链,js 继承原理,js 原型链继承 原型式继承,js 原型继承的几种方法,js原型链constructor,js 原型链继承 原型式继承,js 原型链继承 原型式继承,js 原型链继承 原型式继承,内容如对您有帮助,希望把文章链接给更多的朋友!

Node.js生成HttpStatusCode辅助类发布到npm 作为一个好的RestfullApi不仅在于serviceurl的语义,可读性,幂等,正交,作为http状态码也很重要,一个好的HttpStatusCode给使用者一个很好的响应,比如表示

分析Node.js connect ECONNREFUSED错误 最近在准备Angularjs+node.jsdemo的时候在我的mac开发中遇见此错误,如下:events.js:throwarguments[1];//Unhandled'error'event^Error:connectECONNREFUSEDaterrnoException(net.js::

关于JavaScript中的关联数组分析 通常的数组在填充时会隐式或者显示指定数组下标,但JS中数组可以以名字的形式为元素赋值,这就形成了关联数组,如:vararr=newArray();arr["china"]="beijing

标签: js继承原型链

本文链接地址:https://www.jiuchutong.com/biancheng/377643.html 转载请保留说明!

上一篇:javascript中常用编程知识(JavaScript中常用的数据类型有)

下一篇:Node.js生成HttpStatusCode辅助类发布到npm

  • 减免税额和免税额一样吗
  • 股东个人财产转让协议
  • 出口免税收入会退税吗
  • 资产现金流量收益率计算例题
  • 生产成本和营业成本的关系
  • 车船税和保险在一起怎么报销
  • 低值易耗可以直接入管理费用吗
  • 应收票据属于其他应收账款吗
  • 弥补以前年度亏损会计分录
  • 塔吊基础属于哪一类
  • 工伤职工应享有的待遇及救济途径
  • 货币形式投资的特点是
  • 增值税纳税处理
  • 应计提的存货跌价准备
  • 个税个人减免
  • 政策性搬迁资产损失情况怎么写
  • 商业折扣如何开票
  • 私车公用税务政策性文件
  • 房地产预收款如何申报增值税
  • 营改增后房屋维修的发票可以抵扣吗?
  • 物业费属于什么合同
  • 销项负数票需要把之前的票退回吗
  • 贸易公司未开票收入要报税吗
  • 年增收节支总额与新增利税的关系
  • 信用卡购物消费怎么算
  • 融资租赁的利息可以税前扣除吗
  • 组织员工出游注意事项
  • 让劳务公司代发工资
  • PHP:zip_entry_read()的用法_Zip函数
  • 超市进货产品
  • 猿人知乎
  • 加德满都治安状况如何
  • pytorch_lightning.utilities.exceptions.MisconfigurationException: You requested GPUs: [1] But...
  • php去除指定字符
  • 商场代收款发票图片
  • 进价金额核算法例题
  • 软考备考时间
  • 低调低调
  • 增值税折扣发票有折扣字样
  • 机关事业单位以外包服务方式长期用工
  • 未开票收入如何做会计分录
  • 年度报表资产总额平均值怎么算
  • 租赁发票的租赁日期怎么写
  • wordpress site
  • 最常用的成本核算表格
  • phpcms生成html
  • sqlyog提示
  • 房地产企业买地
  • 门诊收费票据能重新打印吗
  • 最新个人捐款是什么意思
  • 外贸企业出口退税流程(详细步骤)
  • 投资收益会计科目账务处理
  • 小规模企业现金流量表
  • 如何提取十位数
  • 其他非流动资产减少的原因
  • 企业发生坏账损失时,在当期确认坏账损失
  • 投资利润率怎么看投资好还是不好
  • 分公司往子公司投资如何做税务处理?
  • 营业外支出明细账应该采用的格式是
  • 中介收取中介费的法律依据
  • 营业外支出会导致所有者权益减少吗
  • 上月有留抵税额本月怎么申报
  • 进项做成了销项怎么调账
  • 减免的费用怎么做账
  • 如何设计高效合理的未来课程
  • 惠普装xp系统
  • windows10mobile官网
  • XP下HTTP的403.9错误-禁止访问:连接的用户过多 重启iis可以解决
  • pln是什么文件
  • vue动态引入模块
  • jquery拖拽流程布局
  • js图形图表
  • jquery页面
  • linux pythonide
  • 用JObj实现的渐变效果
  • 天津2023防暑降温费标准文件
  • 工会经费按年还是季度申报
  • 税务退休工资
  • 十四五时期税收制度
  • 长沙的河西包含哪几个区
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号