位置: 编程技术 - 正文

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

  • 9月份扣什么税?
  • 计提减值准备是什么凭证
  • 征地费用应计入什么会计科目
  • 未交增值税借方表示什么
  • 年终奖1月发放能算上一年吗
  • 出售的固定资产通过固定资产清理吗
  • 有限公司能否申请破产
  • 如何使用发票对冲个人所得税
  • 已经认证的抵扣联不见了,怎么办?
  • 会计科目的设置
  • 募捐建议
  • 退回多扣社保分录
  • 酒店业小规模纳税人可以享受2023年应纳税额抵减政策吗
  • 增值税减免税款科目怎么结转
  • 进项抵扣抵扣
  • 两年利润都为负数,如何计算完成率
  • 增量留底税额怎么进行确定
  • 单位购进员工餐食材怎做账务处理?
  • 外籍人员工资个税
  • 企业增资需要缴纳什么税
  • 任务管理器网络占用率100%怎么办
  • 原材料暂估分录
  • 房子按季度收取租金,怎么交房产税
  • 固定资产清理净值是什么意思
  • 支付安装设备所有费用
  • win7安装驱动程序
  • windows11怎么快速截屏
  • 进口关税和增值税
  • 广告费用计入什么会计科目
  • 年度中间适用的预扣率高于全年综合所得年适用税率
  • window10自带商店下载位置
  • 实缴注册资本股权转让怎么交税
  • php stl
  • php操作redis
  • thinkphp 登录功能
  • 事业单位体检费用标准
  • Vision Transformer 模型详解
  • 福利费专用发票如何账务处理
  • configure命令
  • 个人的无形资产
  • 企业之间收的借款利息该如何交税 原文
  • 技术服务费计入成本会计分录
  • 简易征收税率表
  • 2、springboot+mybatis+ajax+pageHelper+idea+maven(全套增删改查)
  • java中空字符怎么表示
  • 在建工程转固定资产的账务处理
  • sqlserver存储过程声明变量
  • pygame编程
  • 织梦内容页模板修改
  • 固定资产清理账户借方
  • 公允价值变动借方表示什么
  • sql with as用法详解
  • 固定资产折旧的计算方法
  • 调整以前年度损益调整什么时候结转
  • mysql三种安装方式
  • 股东捐赠资产要纳税吗
  • 广告公司的广告制作费计入什么科目
  • 完税凭证抵扣进项税额分录
  • 商业承兑到期对方不付款会计分录
  • 借调人员费用列支
  • xp系统没有声音没有音频设备
  • mac系统怎么打开任务管理器
  • ghost装机顺序
  • 如何清理注册表文件
  • win8.1评估版
  • ubuntu的root
  • centos dvd安装
  • hp是什么软件缩写
  • 基于centos6安装kvm服务
  • [置顶]马粥街残酷史
  • android!
  • android查询数据库
  • js的异步解决方案有哪些
  • python多线程异常后所有线程均不往下执行
  • javascript instanceof 与typeof使用说明
  • python中将字典转换为字符串
  • 河南城乡居民医疗保险电话
  • 国家税务总局公告2017年第21号
  • 在医院如何开报告单
  • 不缴纳耕地占用税
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设