位置: IT常识 - 正文

js实现继承属性和方法(js实现继承属性功能)

编辑:rootadmin
js实现继承属性和方法 js实现继承属性和方法1 使用extends实现继承2 原型链继承3 组合继承4 寄生组合继承5 实例继承6 拷贝继承7 扩展7.1 函数中方法定义在函数内部、函数外、prototype上的区别7.2 class创建实例与构造函数创建实例

推荐整理分享js实现继承属性和方法(js实现继承属性功能),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:js继承几种方式,js实现继承属性功能,js继承的三种方法,js继承如何实现,js 继承实现,js继承的三种方法,js继承的三种方法,js继承几种方式,内容如对您有帮助,希望把文章链接给更多的朋友!

首先定义一个父类

function Animal (name, age) { this.name = name this.age = age this.eat = function () { console.log('吃', this.name, this.age) }}Animal.prototype.drink = function () { console.log('喝', this.name, this.age)}// 实验一下const test = new Animal('狗', 3)test.eat()test.drink()console.log(test)

运行结果

1 使用extends实现继承

最简便的继承方式,仅支持ES6+

class Dog extends Animal { constructor(name, age, breed) { super(name, age) this.breed = breed } cry () { console.log('叫', this.name, this.age, this.breed) }}// 实验一下 const dog = new Dog('狗', 3, '田园犬'); dog.eat() dog.drink() dog.cry() console.log(dog)

实验结果

2 原型链继承function Dog (name, age, breed) { Animal.call(this, name, age); this.breed = breed; this.cry = function () { console.log('叫', this.name, this.age, this.breed) }}Dog.prototype = new Animal()Dog.prototype.constructor = Dog// 实验一下const dog = new Dog('狗', 3, '田园犬');console.log(dog)dog.eat()dog.drink()dog.cry()js实现继承属性和方法(js实现继承属性功能)

实验结果

3 组合继承function Dog (name, age, breed) { Animal.call(this, name, age); this.breed = breed; this.cry = function () { console.log('叫', this.name, this.age, this.breed) }}Dog.prototype = Object.create(Animal.prototype)Dog.prototype.constructor = Dog// 实验一下const dog = new Dog('狗', 3, '田园犬');console.log(dog)dog.eat()dog.drink()dog.cry()

实验结果

4 寄生组合继承function Dog (name, age, breed) { Animal.call(this, name, age); this.breed = breed; this.cry = function () { console.log('叫', this.name, this.age, this.breed) }}(() => { let Super = function () { }; Super.prototype = Animal.prototype; Dog.prototype = new Super(); Dog.prototype.constructor = Dog;})();// 实验一下const dog = new Dog('狗', 3, '田园犬');console.log(dog)dog.eat()dog.drink()dog.cry()

实验结果

5 实例继承function Dog (name, age, breed) { let dog = new Animal(name, age); dog.breed = breed; dog.cry = function () { console.log('叫', this.name, this.age, this.breed) } return dog}// 实验一下const dog = new Dog('狗', 3, '田园犬');console.log(dog)dog.eat()dog.drink()dog.cry()

实验结果

6 拷贝继承function Dog (name, age, breed) { let animal = new Animal(name, age); for (let key in animal) { this[key] = animal[key] } this.breed = breed; this.cry = function () { console.log('叫', this.name, this.age, this.breed) }}// 实验一下const dog = new Dog('狗', 3, '田园犬');console.log(dog)dog.eat()dog.drink()dog.cry()

实验结果

7 扩展7.1 函数中方法定义在函数内部、函数外、prototype上的区别挂载在函数内部的方法,实例内部会复制构造函数的方法挂载在原型上的方法,不会去复制。挂载在内部和原型上的方法都是可以通过实例去调用的一般来说,如果需要访问构造函数内部的私有变量,我们可以定义在函数内部,其他情况我们可以定义在函数的原型上在函数外定义的方法,只能用类调用函数位置调用方式结果构造函数内函数名直接调用报错函数外函数名直接调用正常执行函数外 prototype上函数名直接调用报错构造函数内实例化对象调用正常执行函数外实例化对象调用报错函数外 prototype上实例化对象调用正常执行7.2 class创建实例与构造函数创建实例function exa1 (name, age) { this.name = name this.age = age this.innerFunc = function () { console.log('inner') } } exa1.prototype.outerFunc = function () { console.log('prototype') } exa1.getClassName = function () { console.log('example') } class exa2 { constructor(name, age) { this.name = name this.age = age } innerFunc = function () { console.log('inner') } outerFunc () { console.log('prototype') } static getClassName () { console.log('example') } } console.log(new exa1(), new exa2())

本文链接地址:https://www.jiuchutong.com/zhishi/299660.html 转载请保留说明!

上一篇:前端实战|React18项目启动——pc端极客园项目前置准备(前端实战培训)

下一篇:ChatGPT加强版GPT-4面世,打工人的方式将被颠覆(gpt3 plug)

  • ipad迷你2相当于苹果几(ipad迷你2)(ipad迷你2是多少寸)

    ipad迷你2相当于苹果几(ipad迷你2)(ipad迷你2是多少寸)

  • qq人脸识别是别人的怎么解除(qq人脸识别是别人的脸怎么更换)

    qq人脸识别是别人的怎么解除(qq人脸识别是别人的脸怎么更换)

  • 苹果系统如何改微信号(苹果系统如何改成安卓系统)

    苹果系统如何改微信号(苹果系统如何改成安卓系统)

  • 华为p40用什么摄像头(华为p40摄像头是多少像素)

    华为p40用什么摄像头(华为p40摄像头是多少像素)

  • 小米nfc交通卡无法删除(小米交通卡没反应)

    小米nfc交通卡无法删除(小米交通卡没反应)

  • 手机耳机断在耳机孔怎么办(手机耳机断在耳机孔修要多少钱)

    手机耳机断在耳机孔怎么办(手机耳机断在耳机孔修要多少钱)

  • 探探看不到对方活跃时间是为什么(探探看不到对方上线时间是怎么回事)

    探探看不到对方活跃时间是为什么(探探看不到对方上线时间是怎么回事)

  • 华为lr键怎么设置(华为lr键是什么)

    华为lr键怎么设置(华为lr键是什么)

  • realme x2是什么牌子的手机(realme x2是什么牌子)

    realme x2是什么牌子的手机(realme x2是什么牌子)

  • 华为触屏时有个小圆圈(华为触屏时有个圆点怎么关闭)

    华为触屏时有个小圆圈(华为触屏时有个圆点怎么关闭)

  • 运算器控制器和寄存器属于什么(运算器控制器和内存储器合称为主机)

    运算器控制器和寄存器属于什么(运算器控制器和内存储器合称为主机)

  • 耗材余量错误是什么意思(耗材余量错误是什么意思芯片掉了)

    耗材余量错误是什么意思(耗材余量错误是什么意思芯片掉了)

  • apple pencil怎么关(apple pencil怎么关闭电源)

    apple pencil怎么关(apple pencil怎么关闭电源)

  • 电脑连接显示器无信号(电脑连接显示器没有声音怎么办)

    电脑连接显示器无信号(电脑连接显示器没有声音怎么办)

  • python语言公开发行版本诞生于哪年(python开发gui)

    python语言公开发行版本诞生于哪年(python开发gui)

  • macbook为啥充不了电(mac book为什么充不进去电)

    macbook为啥充不了电(mac book为什么充不进去电)

  • 淘宝pc页面是什么意思(淘宝pc端叫什么)

    淘宝pc页面是什么意思(淘宝pc端叫什么)

  • ipad如何设置动态壁纸(ipad如何设置动态壁纸自己相册里的)

    ipad如何设置动态壁纸(ipad如何设置动态壁纸自己相册里的)

  • 微信被投诉多久可以正常(微信投诉多久受理成功)

    微信被投诉多久可以正常(微信投诉多久受理成功)

  • 已好评了怎样申请退款(已好评了怎样申诉)

    已好评了怎样申请退款(已好评了怎样申诉)

  • 华为正在安装的软件怎么删除不了(华为正在安装的软件怎么删除掉)

    华为正在安装的软件怎么删除不了(华为正在安装的软件怎么删除掉)

  • p30锁屏快捷键(华为p30pro锁屏快捷键怎么设置)

    p30锁屏快捷键(华为p30pro锁屏快捷键怎么设置)

  • 帝国cms模板文件存在哪个文件目录里(帝国cms模板文件在哪)

    帝国cms模板文件存在哪个文件目录里(帝国cms模板文件在哪)

  • 矿产资源补偿费计入管理费用吗
  • 桥闸通行费怎么做账务处理
  • 注会其他专业可以考吗
  • 本年利润借方余额意味什么
  • 会计信息采集审核需要多久
  • 出口退税申报无电子信息
  • 电子承兑汇票转让怎么操作
  • 小规模增值税征收条件
  • 所得税退税会计账务怎么处理
  • 存货残料收入账务处理?
  • 居民企业只就其境内全部所得纳税
  • 付给其他公司的服务费怎么记账
  • 一次性医保补助多少钱
  • 出纳如何登账
  • 不征税收入税收政策
  • 营改增之前房产税计税依据
  • 开普通发票现金走账怎样处理?
  • 销售无形资产增值税纳税义务发生时间
  • 住宿费可以抵扣吗?
  • 营改增的会计分录
  • 关于营改增发票开具的热点问题
  • 经营活动现金流量净额
  • 行政单位库存物资管理办法
  • 银行对公账户网上注销流程需要多久
  • 应收账款的账务处理方式是什么
  • 企业所得税可以税前扣除的
  • 王者荣耀干将莫邪技能
  • 微pe工具箱怎么用
  • nvcpl.dll是什么
  • createsystem
  • 企业的税收优惠政策有哪些
  • 坏账准备税收调整
  • pytorch怎么入门
  • 什么发票才能做账务处理
  • 再生资源回收公司会计科目
  • 社保局申报工伤款多久能下
  • 劳务人员劳务费走薪资还是走报销
  • 车间用的液化气计入什么科目
  • 运营级别划分
  • SQLite3 API 编程手册
  • 职工体检费用标准规定
  • 股权收购被收购方怎么做账
  • 小规模企业主营业务成本分录
  • 已付预付款当月怎么入账
  • 更衣柜分配方案
  • 应收账款收不回来
  • 收了对方预付款怎么打条
  • 农产品增值税公式
  • 利润表怎么没有本月数
  • 企业进行资产评估的目的可能是
  • 无形资产摊销如何记账
  • mysql进阶之路
  • sqlserver数据库版本号怎么查
  • kms激活的弊端
  • 虚拟系统win10
  • centos基本操作
  • freebsd使用手册
  • easybcd修复ubuntu
  • mac os操作教程
  • bearshare.exe进程安全吗 bearshare是什么进程
  • win10进入安全模式后怎么恢复正常模式启动电脑
  • win10 edge浏览器
  • vncviewer连接linux
  • win7电脑启动
  • 不格式化更改盘符
  • javascript中循环结构包括
  • 多个版本python
  • 如何进行js 的测试
  • jquery选择器的使用
  • 批处理杀死进程
  • javascript常用函数大全
  • AngularJS + Node.js + MongoDB开发的基于高德地图位置的通讯录
  • angular const
  • 深入理解javascript
  • 收集什么比较好
  • 北京税务局网站
  • 莅临指导和莅临交流的区别
  • 中通快递深圳同城多少钱
  • 加拿大的环保
  • 企业税收有哪些税种
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设