位置: 编程技术 - 正文

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

编辑:rootadmin

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

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

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

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

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

  • 土地款发票是否可以抵扣
  • 个人所得税经营所得申报
  • 税率开错情况说明
  • 个人到税务局开增值税专用发票
  • 差旅费报销单属于什么凭证?
  • 银行承兑汇票贴现利率一般多少
  • 研发费用加计扣除新税收政策2023
  • 企业取得5%的房产增值税发票是否可以抵扣呢?
  • 外购白酒用于个人销售吗
  • 销项负数发票会计摘要
  • 分公司税务是独立核算还是非独立
  • 环境保护税由什么部门负责征收管理
  • 什么情况下一般疑问句用do
  • 红冲发票地址不一样可以吗
  • 财政收据可以抵税吗
  • 购买免税苗木抵税分录
  • 无形资产的相关税费包括增值税吗
  • 环评费入账的会计分录是什么啊
  • 待摊费用和预提费用的区别
  • 税金及附加包括个人所得税吗
  • 以物抵债的会计分录
  • windows11怎么查询激活时间
  • php current
  • php判断查询是否有结果
  • layuiadmin动态菜单
  • pytorch train()
  • 资产减值损失科目性质
  • 企业所有的支出是什么
  • 稽查补缴以前年度的社保
  • es5和es6的区别
  • 理财产品利息计算方法
  • 织梦系统基本参数
  • 预收账款多好还是少好
  • 主营业务冲减怎么做账
  • 织梦系统
  • python 读取图片
  • MySQL数据库存储引擎
  • 可以直接在企业所得税税前扣除的是
  • 开发成本为什么放在存货里
  • 发票已经认证后怎么撤销
  • 个体工商户开普票需要进项票吗
  • 总资产报酬率的高低直接影响净资产收益率的高低
  • 政府会计制度收回多发工资
  • 退休返聘人员工伤怎么赔偿
  • 报废资产处置账务处理
  • 一般纳税人支出都要交税吗
  • 不是销售性质的工作
  • 事业单位财政直接支付购置固定资产
  • 异地建筑服务开全电发票
  • 债务重组的会计例题
  • 外资企业所得税优惠政策
  • 损益类科目明细账怎么结账
  • 保险公司收车船税返还手续费犯罪
  • 破产清算的程序特点
  • 货拉拉平台运费没有结打不通电话怎么办
  • 混合销售行为的概念
  • 去年的进项发票今年怎么入账
  • 工业企业增值税税率
  • sql server查询
  • MySQL 5.6 中 TIMESTAMP 的变化分析
  • spring-jdbc.jar
  • mysql安装过程中报错
  • windowsserver2008r2版本区别
  • winsock2
  • win7桌面怎么设置到d盘
  • bd是什么文件
  • windows10更新最新版本
  • centos8拨号上网
  • kprcycleaner.exe是什么
  • win10怎么切任务管理
  • linux wc-l
  • win8跳过开机密码
  • html气泡效果
  • python2与python3中的区别
  • 如何用python进行数据处理
  • 浅析科学发展观的核心立场
  • linux服务器安全攻防
  • vue组件用法
  • unityshader
  • 联通前面加什么可以隐藏号码
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设