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

  • 个人所得税申报截止时间
  • 房子税票是什么意思
  • 根据付款申请单付款
  • 已导出的申报表如何修改
  • 向境外分派红利怎么计算缴纳企业所得税
  • 商贸流通企业包括哪些
  • 固定资产盘盈原因
  • 托收承付和委托收款的含义和相同之处
  • 一台设备分期开票数量
  • 海关免税设备清单
  • 如何能减免个人所得税
  • 应纳所得税额除以收入等于什么
  • 填报退税
  • 税收协助
  • 发票上电话可以写手机号吗
  • 中央非税收入统一票据怎么做账
  • 小规模纳税人增值税超过30万怎么纳税
  • 企业重组的所得税怎么算
  • 实际销售金额是含税还是不含税
  • 施工津贴属于
  • 认证成功次月何时补发
  • 电脑开机弹出documents文件夹
  • win7鼠标点右键没反应
  • 京东白条账单制和订单制是什么样的
  • 以前年度原材料调出怎么做会计分录
  • 现金日记账的收为什么不根据银行和现金相互划转
  • php如何防止表单重复提交
  • 微信php开发包
  • 会计实务加班费的账务处理
  • 电脑开机显示怎么取消?
  • G40/50-70、SR1000随机Linux改安装Win7系统的实现方法
  • uniapp示例
  • 我整理的邪恶铭刻所有卡牌及自制卡
  • 补缴房产税土地使用税怎么算
  • 装饰工程公司主要做什么
  • CVE-2016-1000027分析
  • php获取地理位置
  • php官方文档
  • 简单谈谈php中的安全性
  • php7多线程支持如何
  • thinkphp框架入门
  • 增值税留抵税额退税政策
  • 季节性停工计入当期损益吗
  • 加计抵减退税的会计分录
  • phpcms程序
  • 物流公司驾驶员工资计算方式
  • 进口关税如何交
  • 个体工商户免费开票额度
  • 不含税单价和不含税合价的区别
  • 借款与报销流程设计
  • 餐饮税务每个月多少钱
  • 多计提的工资怎么冲销
  • 应交税费月底账务处理
  • 法人私户转公户备注什么
  • 零余额账户银行日记账
  • 企业到外地
  • 待认证进项税额和待抵扣进项税额的区别
  • 一般纳税人先确认收入吗
  • 无形资产的摊销方法
  • mysql 分组语句
  • linux下mysql的root密码忘记的解决方法
  • winxp怎么装系统
  • 怎么设置pe系统
  • ubuntu20.04关闭图形界面命令
  • windows如何关闭
  • windows恶意软件删除工具怎么安装
  • 64位win7安装kb3038314补丁更新失败临时解决方法
  • linux定时任务实现原理
  • win10系统怎么设置不锁屏和休眠
  • win10搜索设置选项
  • jquery怎么获取
  • unity3d怎么做游戏
  • java script教程
  • python 获取网页上文件地址
  • android开发主要用什么语言
  • Python中断言语句
  • 西安经开税务局电话号码
  • 纳税申报指什么意思
  • 税务局解决户口吗
  • 新三步走和旧三步走的异同点
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设