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

  • 公司注册实缴资金能取出吗
  • 关税的计算公式是什么
  • 银行开具的票据有哪些
  • 建筑业资源税如何缴纳
  • 小规模免收增值税的收入范围
  • 简易计税费
  • 增值税小规模纳税人优惠政策
  • 购买方已认证未抵扣,发票用退回吗
  • 办理外汇账户开户手续
  • 营改增土地出租
  • 应交税金及附加包括哪些
  • 融资租入的企业有哪些
  • 以前年度费用未入账税务处理
  • 4s店改装车后卖车合法吗
  • 境内企业转让境外股权税收
  • 个人申请补交个税怎么写
  • 税务局工会经费新举措
  • 税控机抵扣网上申报如何做?
  • 员工培训费应该怎么算
  • 城市维护建设税属于什么税种
  • 个人股权转给公司要交个税吗
  • 政府装修补贴政策
  • linux怎么安装使用conda
  • linux默认文件类型
  • 生产型企业公司有哪些
  • php获取远程文件扩展名
  • 企业所得税季度预缴纳税申报表
  • file*fp什么意思
  • 想做酒水批发的生意怎么做?
  • 低值易耗品费用账务处理
  • 提前支付的费用记账
  • 买入返售金融资产和卖出回购金融资产
  • ci框架api版本
  • 什么叫含税和未含税区别
  • 扩散分类
  • react基础入门
  • chk命令
  • 电子发票报税怎么操作
  • 企业年报分析的内容包括哪些方面
  • 管理费用怎么入账
  • 小规模季末税费处理
  • 关联企业债资比怎么计算
  • 建筑企业预缴税率
  • 个人申请退税要交税吗
  • 帐外资金
  • 公司减少注册资本的条件和程序
  • 工程施工和工程结算对冲有差额的会计分录
  • 房地产企业成本核算方法
  • ETC通行费发票抵扣2021新规定
  • 计提借款利息怎么算
  • 将购进的材料用于自制生产用设备
  • 福利费税前扣除工资薪金包含哪些
  • 微信提现手续费多少?
  • 租用写字楼水电怎么收费
  • 小规模纳税人开专票税率是多少?
  • 个人经纪代理服务
  • 股东利润分配预缴税款
  • 融资租入固定资产计提折旧吗
  • 销售成本存在的问题
  • 账本页面设置
  • 请根据你的了解叙述c++的特点,c++对c有哪些发展
  • win10系统的邮件和日历跟outlook一样嘛
  • win7系统升级到win10后,还能还原回来吗
  • win10预览版21277下载
  • win8 更改电脑设置
  • win7屏幕刷新率怎么调高
  • 电脑系统脚本错误
  • 浪漫樱花完整视频
  • input和button按钮合到一起
  • 在web项目中引入什么
  • xml文件的数据如何读取
  • e87移植
  • javascript教程完整版
  • 用python画roc曲线
  • [置顶] 安卓手机连接IP100蓝牙打印机实现打印功能
  • 前端框架到底是什么
  • 青岛网上办税服务厅登录
  • 国家税务总局办税指南
  • 北京国税局电话客服热线
  • 应聘保险公司需要了解什么
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设