位置: 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)

  • 小米蓝牙耳机找不到了怎么办(小米蓝牙耳机找回功能)

    小米蓝牙耳机找不到了怎么办(小米蓝牙耳机找回功能)

  • 魅族17机身尺寸是多少(魅族17机身尺寸多大)

    魅族17机身尺寸是多少(魅族17机身尺寸多大)

  • 钉钉数据怎么移到新手机(钉钉记录怎么迁移)

    钉钉数据怎么移到新手机(钉钉记录怎么迁移)

  • 华为p40为什么分屏不了(华为p40为什么分辨率高感觉很模糊)

    华为p40为什么分屏不了(华为p40为什么分辨率高感觉很模糊)

  • 华为p30来电没有声音(华为p30来电没有铃声)

    华为p30来电没有声音(华为p30来电没有铃声)

  • teamviewer远程控制能听到声音吗(Teamviewer远程控制多台电脑)

    teamviewer远程控制能听到声音吗(Teamviewer远程控制多台电脑)

  • 华为设置锁屏壁纸在哪里设置(华为设置锁屏壁纸)

    华为设置锁屏壁纸在哪里设置(华为设置锁屏壁纸)

  • 八类网线能家用吗(八类网线能家用吗500M光线)

    八类网线能家用吗(八类网线能家用吗500M光线)

  • iPhone卡贴机有什么坏处(iPhone卡贴机有什么缺点)

    iPhone卡贴机有什么坏处(iPhone卡贴机有什么缺点)

  • 华为手环3e如何开机(华为手环3e如何恢复出厂设置)

    华为手环3e如何开机(华为手环3e如何恢复出厂设置)

  • ml6h2ch/a是苹果几(ml6h2ch/a是苹果什么型号)

    ml6h2ch/a是苹果几(ml6h2ch/a是苹果什么型号)

  • 红包已领取但是没到账(红包已领取但是没收到)

    红包已领取但是没到账(红包已领取但是没收到)

  • 快手注销还会显示在好友里吗(快手注销后会显示什么)

    快手注销还会显示在好友里吗(快手注销后会显示什么)

  • ipad冲半天电没充进去(ipad冲半天电没充进去怎么办,会不会是冬天太冷)

    ipad冲半天电没充进去(ipad冲半天电没充进去怎么办,会不会是冬天太冷)

  • 苹果8p跑分多少正常

    苹果8p跑分多少正常

  • iPhone7用pd充电器会坏吗(iphone7p可以用pd充电器吗)

    iPhone7用pd充电器会坏吗(iphone7p可以用pd充电器吗)

  • 打印机显示e2什么意思(打印机上显示e2)

    打印机显示e2什么意思(打印机上显示e2)

  • vivox20a是多久上市的(vivox20出来多久了)

    vivox20a是多久上市的(vivox20出来多久了)

  • qq删留言操作过于频繁多久才能好(qq留言删了还能找回来吗)

    qq删留言操作过于频繁多久才能好(qq留言删了还能找回来吗)

  • 今日头条封禁如何申诉(今日头条封禁如何起诉)

    今日头条封禁如何申诉(今日头条封禁如何起诉)

  • b612的变音怎么弄(b612怎么改变背景)

    b612的变音怎么弄(b612怎么改变背景)

  • 快手极速版怎么发作品(快手极速版怎么关闭广告推送)

    快手极速版怎么发作品(快手极速版怎么关闭广告推送)

  • 抖音地址会自动更改吗(抖音地址自动更新吗)

    抖音地址会自动更改吗(抖音地址自动更新吗)

  • 在快手直播间买的东西怎么查订单(在快手直播间买的东西找不到订单)

    在快手直播间买的东西怎么查订单(在快手直播间买的东西找不到订单)

  • phpcms全站伪静态设置(wordpress全站伪静态)

    phpcms全站伪静态设置(wordpress全站伪静态)

  • 电费发票隔月开如何做账
  • 年度纳税申报表A105000纳税调整项目明细表中,收入
  • 一般计税方法和简易计税方法的计算公式
  • 什么情况下进项税额需要转出
  • 不征税收入有哪些类型
  • 跨月的增值税普票作废步骤
  • 开具红字增值税专用发票是什么意思
  • 非居民企业所得税税率10%
  • 先进技术企业的企业所得税税率
  • 仓储企业的成本有哪些
  • 出口样品账务处理
  • 政府制定优惠政策
  • 交通费汇算清缴怎么做账
  • 应交税金审计
  • 所得税季报固定资产加速折旧表资产原值
  • 怎么计提企业所得税
  • 二手房房产税税率
  • 一般纳税人销售货物会计分录
  • 分拆业务所涉及客户
  • 农产品增值税免税政策
  • 收到社保补贴计入什么科目
  • 计提坏账为什么无法收回呢
  • 收到带息商业票据贴现会计处理
  • windows11怎么设置默认应用
  • 电脑有些进程关不掉
  • 腾讯电脑管家中的软件市场打不开
  • 小规模纳税人的增值税怎么算
  • 什么是债券持有人
  • 房产税的征收范围为
  • nerosvc.exe - nerosvc是什么进程 有什么用
  • exescope是什么软件
  • go是单进程还是多进程
  • 记账凭证填制的依据
  • 异常生物见闻录
  • php代码生成
  • linuxvim批量替换
  • 个人合伙企业如何计算个人所得税
  • 勾选确认发票后能撤销吗
  • 俄勒冈zip
  • AI工具大全
  • 为什么税前利润加可抵扣暂时性差异
  • svg symbol
  • php aes加密解密
  • 营业税规定
  • 不动产物权归属和内容的根据是什么?
  • 工人意外伤害保险
  • 个体工商户转企业政策
  • 存货盘亏处理报批
  • 公司土地使用权可以自主转让吗
  • 水电费计提是什么意思
  • 应付账款的入账价值为未来偿还额
  • 办培训机构需要什么条件手续
  • 安全生产费用应当专户储存专款专用专户核算
  • 关于职工薪酬的确认和计量下列说法中不正确的是
  • 银行汇票使用方法
  • 安装调试费计入
  • 无形资产出售时累计摊销为什么在借方
  • 工程怎么做会计分录
  • 预收账款的金额是什么
  • 原材料入库单应根据采购订单还是到货数量
  • 建账的要点及应注意的问题
  • win8激活点不进去
  • centos如何查看所有用户
  • windows 7的用户类型
  • 搜集数据软件
  • 手机物理游戏
  • cocos屏幕适配方案
  • [置顶]游戏名:chivalry2
  • 基于python的设计
  • perl 文件
  • 批处理的应用
  • 浅谈会计诚信与职业道德论文
  • Android: AudioFlinger中AudioPolicy的简单介绍
  • ansible客户端需要装python
  • javascript获取数据类型
  • jquery获取自定义标签的值
  • 国家税务总局司长
  • 北京市国家税务局网站官网
  • 地税局刚进去工资多少
  • 贵州银行短信服务怎么开通
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设