位置: 编程技术 - 正文

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

  • 哪些是现代服务
  • 什么情况要缴印花税
  • 免税收入怎么做账务处理
  • 流转税率是什么意思
  • 以银行存款支付水电费
  • 应付职工薪酬月末怎么结转
  • 其他收益怎么用
  • 劳务派遣用工的岗位只能在哪些工作岗位上实施
  • 税务局多扣的税可以退吗
  • 入库前的挑选整理费用计入采购成本吗
  • 应扣缴税额是什么意思
  • 买一赠一怎么确定真假
  • 进口商品买卖的关键环节
  • 低值易耗品属于资产类
  • 个人业务费是什么
  • linux批量操作工具
  • 会计管理制度范本
  • 捐赠口罩的人
  • 索尼vaio笔记本看型号
  • 营业款怎么存入公司账户
  • 入账成本包括增值税税额吗
  • 如何更改自己
  • 支付包装物押金为什么是其他应收款
  • 核定企业应税收怎么算
  • PHP简单实现HTTP和HTTPS跨域共享session解决办法
  • 经营租入的固定资产是什么意思
  • 受托代销商品会计分录受托方
  • php 上传图片
  • 美团收购联联
  • apt-key is deprecated
  • 建行企业网上银行主管盾权限分配
  • phpcms使用教程
  • 帝国cms使用手册
  • 无法收回的房租押金出什么会计科目
  • 中药和中药饮片有区别吗
  • mysql的long类型
  • 修改数据库为多个数据
  • 进项税额转出的会计分录怎么做
  • 合伙企业税务处理办法
  • 为什么合理损耗不计入成本
  • 2021年村级财务管理要点
  • 以货换货合同
  • 金以旧换新合适吗
  • 暂估成本的账务处理分录
  • 开具的简易计税凭证
  • 产品检测费怎么入账
  • 增值税发票未认证丢失怎么办
  • 小规模普票收入要交税吗
  • 明细账建账的步骤
  • solaris ssh offline
  • 怎么防止win10
  • windows xp.
  • avc用什么打开
  • windows的安装方式有哪些
  • mac vm安装win10
  • 老旧的诗琴五个琴谱大全
  • centos8 redhat
  • live updater
  • WIN10系统怎么查看隐藏的文件夹
  • 系统ui怎么关闭
  • linuxat命令的用法
  • EXTJS记事本 当CompositeField遇上RowEditor
  • nodejs代码规范
  • android开发手册
  • 日常办公常用的批处理脚本
  • 3366小游戏小
  • js点击按钮返回前一个页面
  • python的理解
  • javascript基于什么的语言
  • nodejs sleep方法
  • 批处理转义字符如何
  • vue vue cli
  • shell脚本技巧
  • Python的for和in
  • js图片预览
  • 福建省国家税务局网
  • 重庆国家税务电子税务局官网登录
  • 税务局查帐怎么查
  • 国家税务总局资阳市雁江区税务局
  • 如何代扣个人所得税
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设