JavaScript 中的类是 ES6 引入的语法糖,本质仍基于原型的构造函数机制;它不改变底层逻辑,仅提升面向对象写法的清晰性与一致性,编译后等价于带原型方法的构造函数。
JavaScript 中的 类(class) 是 ES6 引入的语法糖,本质仍是基于原型的构造函数机制;它本身不改变底层运行逻辑,只是让面向对象写法更清晰、更接近其他语言习惯。
使用 class 关键字声明,内部用 constructor 定义初始化逻辑,方法直接写在类体中(无需 function 关键字):
class Person {
constructor(name, age) {
this.name = name;
this.age = age;
}
sayHello() {
console.log(`Hello, I'm ${this.name}`);
}
}
Object.keys(Person.prototype) 不会返回 sayHello)static),不能写普通属性赋值(如 gender = 'male' 需用字段提案或在 constructor 中设置)类和构造函数最终都生成对象并绑定原型,但写法、限制和语义有明显差异:
constructor(即使空着也会自动生成),且不能用 new 调用普通函数那样随意调用类(Person() 会报错,必须用 new Person())extends + super() 实现继承;构造函数需手动操作 Parent.call(this) 和 Object.setPrototypeOf(Child.prototype, Parent.prototype)
static 声明静态方法,自动挂载到类本身;构造函数中需手动赋值,如 Person.create = function(){}
把上面的 class Person 编译成 ES5 就会发现,它等价于一个带原型方法的构造函数:
function Person(name, age) {
this.name = name;
this.age = age;
}
Person.prototype.sayHello = function() {
console.log(`Hello, I'm ${this.name}`);
};
浏览器和 Node.js 执行时,class 仍通过修改 prototype 和调用 new 来创建实例,没引入新对象模型。
#field)等现代特性如果只是简单工厂或单例,普通函数或对象字面量往往更轻量直接。
# javascript
# es6
# java
# js
# node.js
# node
# typescript
# 浏览器
# 工具
# 区别
# 作用域
相关栏目:
【
Google疑问12 】
【
Facebook疑问10 】
【
网络优化76771 】
【
技术知识130152 】
【
IDC云计算60162 】
【
营销推广131313 】
【
AI优化88182 】
【
百度推广37138 】
【
网站推荐60173 】
【
精选阅读31334 】
相关推荐:
php8.4如何配置ssl证书_php8.4https访问配置指南【教程】
c++中explicit(bool)的用法 c++条件性explicit【C++20】
Win11怎么查看显卡显存_查询Win11显卡详细参数方法【步骤】
c++如何利用doxygen生成开发文档_c++ 代码注释规范与HTML文档导出【案例】
Win11怎么设置默认邮件应用_Windows11应用关联Mail设置
Windows怎样关闭Edge新标签页广告_Windows关闭Edge新标签页设置【步骤】
c++怎么实现高并发下的无锁队列_c++ std::atomic原子变量与CAS操作【详解】
Mac怎么安装软件_Mac安装dmg与pkg文件的区别【指南】
PowerShell怎么创建复杂的XML结构
Mac如何整理桌面文件_Mac使用堆栈功能一键整理
c++ unordered_map怎么用 c++哈希表用法【教程】
如何使用Golang处理网络超时错误_Golang请求超时异常处理方法
MAC如何修改默认应用程序_MAC文件后缀关联设置与打开方式更改【教程】
c++20的std::format怎么用 比printf更安全高效的格式化方法【详解】
PythonDocker高级项目部署教程_多容器管理与CI/CD流水线
Win10闹钟铃声怎么自定义 Win10闹钟自定义铃声教程【方法】
如何使用Golang log记录不同级别日志_Golang log Println与Fatal示例
Windows10任务栏图标变成白色文件_Win10重建图标缓存修复方法
Win11怎么激活Windows10_Win11激活Win10系统方法【步骤】
如何使用Golang实现容器自动化运维_Golang Docker运维管理方法
Win11如何更改任务栏颜色 Win11自定义任务栏背景色【美化】
如何在Golang中捕获结构体方法错误_Golang方法返回error处理实践
如何在Golang中使用log包输出不同级别日志_Golang log日志管理与分类
Win10系统怎么查看端口状态_Windows10 CMD查看网络连接
Win11如何卸载OneDrive_Win11卸载OneDrive方法【教程】
php后缀怎么变mp4能播放_让php伪装mp4正常播放的技巧【技巧】
Win11玩游戏全屏闪退怎么办_Win11全屏优化禁用设置【教程】
如何在 Go 中正确反序列化 XML 多节点数组(解决仅解析首个元素的问题)
Windows系统文件被保护机制阻止怎么办_权限不足错误处理方案
c++ atoi和atof函数用法_c++字符数组转数字
PythonGIL机制理解_多线程限制解析【教程】
Win10如何设置双wan路由器 Win10双wan路由器设置方法【指南】
c++怎么使用std::unique实现去重_c++ 容器元素排序与连续重复删除【教程】
Win11视频默认播放器怎么改_Win11关联第三方播放器【步骤】
Win11怎么设置快速访问主页_Windows11资源管理器文件夹选项
如何在 Go 中正确初始化结构体中的 map 字段
Linux如何使用Curl发送请求_Linux下API接口测试与文件下载技巧【步骤】
Python网页解析流程_html结构说明【指导】
Python对象比较与排序_集合使用说明【指导】
Avalonia如何实现跨窗口通信 Avalonia窗口间数据传递
Win11任务栏天气怎么关闭 Win11隐藏天气小组件图标【设置】
Win10如何关闭安全中心所有通知 Win10禁用Windows Defender提醒【设置】
php订单日志怎么导出excel_php导出订单日志到表格教程【教程】
Win11怎么查看已连接wifi密码 Win11查已连wifi密码步骤【教程】
PHP接收参数值为空怎么办_判断和处理空参数方法说明【说明】
PHP中require语句后直接调用返回对象方法的语法解析
php中::能访问全局变量吗_全局作用域与类作用域区分【操作】
c++ namespace命名空间用法_c++避免命名冲突
如何将文本文件中的竖排字符串转换为横排字符串
php高频调试功能有哪些_php常用调试函数与工具汇总【解答】
2025-12-27
致胜网络推广营销网专注海外推广十年,是谷歌推广.Facebook广告全球合作伙伴,我们精英化的技术团队为企业提供谷歌海外推广+外贸网站建设+网站维护运营+Google SEO优化+社交营销为您提供一站式海外营销服务。