ES5继承靠构造函数借用和原型链组合实现,ES6用class/extends/super语法糖并自动建立完整原型链与静态继承。

ES5没有class关键字,实现继承主要靠组合使用构造函数借用(call/apply)和原型链继承。核心思路是:子类实例先拥有父类的实例属性,再让子类原型指向父类原型的副本,从而共享方法。
常见写法(寄生组合式继承,最推荐):
function Parent(name) {
this.name = name;
}
Parent.prototype.say = function() {
console.log('Hello from ' + this.name);
};
function Child(name, age) {
Parent.call(this, name); // 借用构造函数,继承实例属性
this.age = age;
}
// 关键:用Object.create(Parent.prototype)避免调用Parent构造函数
Child.prototype = Object.create(Parent.prototype);
Child.prototype.constructor = Child; // 修复constructor指向
Child.prototype.play = function() {
console.log(this.name + ' is playing');
};
⚠️ 注意点:
Child.prototype = Parent.prototype,否则修改子类原型会影响父类constructor,否则new Child().__proto__.constructor会指向Parent
Parent.staticMethod = () => {}),需额外拷贝ES6引入class语法糖,但本质仍是基于原型的继承。使用extends声明继承关系,子类构造函数中必须调用super()——它负责初始化this并连接原型链。
立即学习“J*a免费学习笔记(深入)”;
class Parent {
constructor(name) {
this.name = name;
}
say() {
console.log('Hello from ' + this.name);
}
static create() {
return new Parent('default');
}
}
class Child extends Parent {
constructor(name, age) {
super(name); // 必须!相当于Parent.call(this, name)
this.age = age;
}
play() {
console.log(this.name + ' is playing');
}
// 静态方法也能被继承
static build() {
return new Child('test', 10);
}
}
✅ 优势明显:
QoQo
QoQo是一款专注于UX设计的AI工具,可以帮助UX设计师生成用户角色卡片、用户旅程图、用户访谈问卷等。
172
查看详情
Child.__proto__ === Parent(静态继承),Child.prototype.__proto__ === Parent.prototype(实例方法继承)super()会直接报错,强制规范流程表面上是语法糖,底层机制有实质性区别:
Child.prototype = ...;ES6在extends时就自动设置好Child.prototype.__proto__和Child.__proto__
this在子构造函数里已存在;ES6中子类构造函数里,this在super()执行前是未初始化的,直接访问会报ReferenceError
Child.staticMethod继承Parent.staticMethod;ES5需手动赋值Child.staticMethod = Parent.staticMethod
get/set、static、private #field等特性,ES5模拟成本高且不统一新项目一律用ES6 class继承。ES5写法仅需了解,用于阅读老代码或兼容极旧环境(如IE)。
遇到报错Must call super constructor in derived class before accessing 'this'?说明忘了在子类constructor第一行写super()。
想在子类中调用父类同名方法?用super.methodName(),这是ES6新增的语法,ES5得写Parent.prototype.methodName.call(this)。
基本上就这些。理解原型链本质,再看class语法,就不会被“语法糖”三个字带偏了。
以上就是J*aScript中如何实现继承_ES5和ES6继承方式对比的详细内容,更多请关注其它相关文章!
# 这是
# 网站建设教程b
# 推广营销软件哪个好用些
# 广东营销推广要多久学完
# seo哪家经验丰富
# 营销推广形式有哪几种
# 小媒体营销推广文案案例
# 提供全渠道营销推广图片
# 信阳网站建设的要求
# 迪庆网站建设机构电话
# 网站建设途径有哪些
# 二叉树
# 链表
# javascript
# 防抖
# 回调
# 会报
# 报错
# 数据结构
# 如何实现
# 子类
# 区别
# access
# app
# java
# es6
相关栏目:
【
Google疑问12 】
【
Facebook疑问10 】
【
优化推广96088 】
【
技术知识133117 】
【
IDC资讯59369 】
【
网络运营7196 】
【
IT资讯61894 】
相关推荐:
小米civi如何设置锁屏时间
在J*a中如何实现类的继承与方法重用_OOP继承方法重用技巧分享
Lar*el如何创建自定义的辅助函数(Helpers)_Lar*el全局函数定义与加载方法
豆包AI怎样为教育场景定制答疑逻辑_为教育场景定制豆包AI答疑逻辑方案【方案】
mysql怎么查询数据_mysql基础查询语句使用教程
Go语言反射机制:如何访问被嵌入结构体遮蔽的方法
excel怎么计算平均值 excel平均函数*ERAGE使用教学
b站如何管理订阅_b站订阅标签分类管理
支付宝如何解绑云闪付_支付宝与云闪付账户关联解除方法
《雅迪智行》用手机开锁方法
实现二叉树的层序插入:基于树大小的路径导航
从J*a应用程序中导出MySQL表数据的技术指南
小红书网页版怎么进 小红书网页版通用入口
智慧职教mooc平台登录网址 智慧职教mooc官网直达
Linux如何自动分析系统异常日志_Linux日志智能检测
哈尔滨城市通昵称修改方法
海棠书屋官方在线书籍入口 海棠书屋文学作品浏览官网链接
J*a中为什么强调组合优于继承_组合模式带来的灵活性与可维护性解析
TikTok视频播放不流畅怎么办 TikTok视频播放优化方法
如何在vscode中关闭it环境
咸鱼怎么设置仅粉丝可见的动态_咸鱼动态粉丝可见设置方法
mysql镜像配置如何设置用户权限组_mysql镜像配置用户组与权限分级管理方法
b站怎么查看视频的码率_b站视频码率查看方法
风神瞳获取全攻略
惠普电脑BIOS界面看不懂怎么办_HP电脑BIOS功能选项解读与设置
国际经济与贸易就业方向解析
如何通过settings.json个性化您的VS Code体验
深入理解J*aScript异步操作:setTimeout与调用栈的真相
米侠浏览器插件无法启用怎么办 米侠浏览器扩展兼容性修复
如何配置VS Code作为您Git操作的默认编辑器
TikTok笔记文字无法编辑如何解决 TikTok笔记文字编辑优化方法
英国搜索:多数英国人认为语言搜索是未来搜索
Excel怎么用XLOOKUP函数实现双向查找_ExcelXLOOKUP替代VLOOKUP+HLOOKUP的高级用法
Vue 3中独立响应式实例的创建与应用
秋风萧瑟洪波涌起中的萧瑟指的是什么
《大润发优鲜》充值方法介绍
《红果免费短剧》下载观看方法
支付宝登录刷脸不是本人如何解决
汽车之家网页版免费登录_汽车之家官网首页直接进入
《深林》冬季章节图文攻略
百度识图图像分析 百度识图识别平台
太平年在哪个平台播出
WPS文字如何进行简繁转换
Sublime怎么快速复制文件路径_Sublime右键菜单增强技巧
快手极速版在线体验区 快手极速版网页体验入口
windows10怎么开启卓越性能_windows10电源选项代码激活
《微信》视频号原创声明开启方法
掌握Go App Engine项目结构与GOPATH:包管理与导入实践
利用Flexbox实现图片元素的二维布局:2x2网格排列指南
酷狗音乐多音轨设置教程
2025-12-16
运城市盐湖区信雨科技有限公司是一家深耕海外推广领域十年的专业服务商,作为谷歌推广与Facebook广告全球合作伙伴,聚焦外贸企业出海痛点,以数字化营销为核心,提供一站式海外营销解决方案。公司凭借十年行业沉淀与平台官方资源加持,打破传统外贸获客壁垒,助力企业高效开拓全球市场,成为中小企业出海的可靠合作伙伴。