位置: 编程技术 - 正文

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

  • 什么情况才能开专票
  • 个人以房产投资企业需要过户吗
  • 资产负债表库存为负数怎么调整
  • 研发支出管理制度
  • 附加税减免税额不能大于本期应纳税额怎么办
  • 运费单独开票的账务处理
  • 预付材料购货款计入什么科目
  • 公司收承兑贴现的会计分录
  • 收到费用报销发票怎么做
  • 上月未计提税金,下月怎么做分录
  • 员工自己承担的商业保险费是多少
  • 摊销房租账务处理
  • 票据追索权向谁追索
  • 购买固定资产增值税可以抵扣
  • 汇算清缴时资产总额如何计算
  • 海关完税价格表
  • 易税是什么
  • 个人购买办公楼出租要交税吗
  • 预提费用和待摊费用是根据以下哪项原则设置的会计科目
  • 纳税退税申请表的基本情况如何写
  • 增值税进项抵扣完了还上附加税吗
  • 固定资产改良被替换怎么处理
  • 收入是零招待费怎么汇算
  • 工程物资期末余额的填列方法
  • 抵税的税额怎么计算
  • 残联备案还能补缴社保吗
  • 应交税费核算
  • 怎么解决win11系统不兼容问题
  • 现金流量表与资产负债表不符
  • 单位外币账户
  • 签证费会计分录
  • 项目投资净现值计算公式
  • 单位购买金税盘的分录
  • 什么是土地使用者依照法律规定
  • linux中php的作用
  • cachelib
  • cortana小娜可以卸载吗
  • vite配置详解
  • 有限责任公司股东对公司债务承担
  • php实现数据库创建题库
  • php实现分页显示
  • api接口长什么样
  • css过渡动画属性
  • 公司账户转私账违法吗
  • 公司基本户被冻结,其它账户也会被冻吗?
  • 什么不计入税金及附加
  • 固定资产一次性折旧账务处理
  • 国际运输代理费属于什么科目
  • 破产清算不够支付员工补偿金
  • 换了公司个人所得税重新计算吗
  • Windows下Postgresql数据库的下载与配置方法
  • 外包食堂如何进货
  • 手工帐如何结转成本费用
  • 工会经费征收项目是什么
  • 工伤 保险赔付
  • 财务费用包括哪些费用
  • 研发费用如何做分录分析
  • MySQL通过触发器解决数据库中表的行数限制详解及实例
  • 详解十二建星择日方法
  • win10虚拟桌面版
  • ubuntu20.04常用软件
  • iTunesHelper.exe是什么进程?iTunesHelper.exe系统错误怎么解决?
  • unins000.exe - unins000是什么意思
  • 不需要秘密的wifi安全吗
  • win10系统如何快速打开控制面板
  • linux命令i
  • 华硕fx80g装系统
  • svhost.exe - svhost是什么进程 有什么作用
  • 怎么更改window系统字体
  • 怎么看win7
  • 彻底弄懂js中的this指向
  • 在一个批处理系统中
  • javascript入门教程
  • 使用jsonp跨域,服务端如何改
  • 跟踪快件
  • python网络编程从入门到精通
  • 注销税控机流程
  • 税务局上下班路上能穿制服吗
  • 用友u8外部凭证怎么删除
  • 企业所得税改革
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设