位置: 编程技术 - 正文

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

  • 税收会计在会计中的应用
  • 随机赠送礼品个人所得税
  • 非居民纳税机构都包含哪些?
  • 个人所得税如何查询工资
  • 文化服务费内容是什么
  • 外贸出口备案需准备什么资料
  • 核定征收需要什么条件
  • 房产经纪公司成本费用
  • 领用本企业生产的水泥用于在建工程
  • 普票冲红原票要退回吗
  • 发票普票一个月能开多少
  • 事业单位银行存款余额组成
  • 承包费收入如何做账
  • 社会团体收到的投资款怎么入账
  • 成本暂估跨年度要怎么处理?
  • 企业贷款银行罚息可以减免吗?
  • 验资取消股东怎么办
  • 为什么有的公司没有一金
  • 如何查询已开出的增值税发票是否被认证
  • 租赁房产不开租房发票
  • 2018年高新技术企业所得税
  • 旅行社代订机票可以入差旅费报销吗
  • 预收培训费怎么确认增值税
  • 资本性支出计算公式为什么加折旧
  • 公司暂估成本过高,如何处理
  • 盈余公积必须提折旧吗
  • 超市开票收回的钱怎么算
  • PHP:oci_lob_copy()的用法_Oracle函数
  • 扶贫入股分红政策
  • php支付功能
  • 误删的文件怎么撤回
  • 受限制用户怎么解决
  • php生成二维码
  • 扫码分享到微信
  • php文件扩展名是什么
  • 公司清算债权债务如何清理
  • 配置eAccelerator和XCache扩展来加速PHP程序的执行
  • 克雷格格林
  • 营改增增值税会计处理
  • 增值税达不到起征点账务处理
  • 公司给我多交了社保用不用退
  • php 进程间通信
  • 网络应用开发技术
  • 什么叫web渗透测试
  • 其他免税销售额大于0免税性质代码
  • 固定资产租赁费的税率是多少
  • mongodb 日志
  • 哪些行业不适用税前加计扣除政策
  • 实收资本可以用于偿还借款
  • 限额领料单属于什么凭证
  • 未达起征点附加税还需要扣税嘛
  • 个税清算所得税怎么计算
  • sql优化方式
  • 生产成本月末结转后有余额吗
  • 工业企业土地使用税
  • 跨月的普通发票怎么开红字发票
  • 贷款减值准备是什么意思
  • 物业公司支出费用
  • 食品发票可以报销吗怎么报销
  • 居民企业与非居民企业的纳税差异
  • 公司租的房子电费发票怎么开
  • 收到劳务费
  • 个人生产经营所得税怎么申报
  • 安装nfs命令
  • 虚拟机vmware下载教程
  • jucheck.exe是什么
  • cpqa1000.exe是安全进程吗 cpqa1000进程有什么作用
  • win8对机械硬盘不友好
  • linux系统怎么安装wine
  • win8切换语言
  • Cocos2d-x 3.2 Lua示例 ActionTest(动作测试)
  • 批处理中如何判断当前文件中是否存在一个子目录
  • 使用的拼音
  • 1.常用
  • js秒数转时间
  • 如何用jquery
  • 安卓 存储权限 访问的地方是哪里
  • 差额征收怎么填报表
  • 广西区国家税务局
  • 车辆购置税查询官网
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设