0

0

javascript中类是什么_如何使用ES6类语法【教程】

夢幻星辰

夢幻星辰

发布时间:2026-01-21 18:29:02

|

641人浏览过

|

来源于php中文网

原创

javascript 的 class 是 function 和原型继承的语法糖,基于原型而非传统类;声明不提升,处于暂时性死区;子类 constructor 必须先调 super() 才能用 this;方法不可枚举;静态方法挂载类本身;类字段是实例属性,不共享。

javascript中类是什么_如何使用es6类语法【教程】

JavaScript 中的 class 不是新的对象创建机制,而是 function 和原型继承的语法糖——它背后仍是基于原型(prototype)的,不是传统面向对象语言中的“类”。直接用它写业务没问题,但若不理解底层,遇到 ReferenceErrorthis 绑定异常或继承行为不符预期时会卡住。

class 声明不会被提升,必须先定义后使用

function 声明不同,class 是「暂时性死区」(TDZ)的一部分。在声明前访问会抛出 ReferenceError,哪怕只是 typeof 也不行。

  • new MyClass() 放在 class MyClass { ... } 上方 → 报错 ReferenceError: Cannot access 'MyClass' before initialization
  • typeof MyClass 同样报错;而 typeof functionName 在函数声明前是 "function"
  • 如果需要前置调用,改用 const MyClass = class { ... }(类表达式),它和 const 一样遵循块级作用域规则,但也不会被提升

constructor 中的 this 指向新实例,但必须显式调用 super() 才能访问 this

在子类 constructor 中,不调用 super() 就用 this,会立即报 ReferenceError: Must call super constructor in derived class before accessing 'this'

Python开发网站指南 WORD版
Python开发网站指南 WORD版

本文档主要讲述的是Python开发网站指南;HTML是网络的通用语言,一种简单、通用的全置标记语言。它允许网页制作人建立文本与图片相结合的复杂页面,这些页面可以被网上任何其他人浏览到,无论使用的是什么类型的电脑或浏览器 Python和其他程序语言一样,有自身的一套流程控制语句,而且这些语句的语法和其它程序语言类似,都有for, if ,while 类的关键字来表达程序流程。希望本文档会给有需要的朋友带来帮助;感兴趣的朋友可以过来看看

下载
  • 即使子类没写 constructor,JS 也会自动补一个隐式的 constructor(...args) { super(...args); }
  • super() 必须在 this 之前调用,且传参需匹配父类 constructor 签名,否则父类初始化失败
  • 若父类 constructor 返回一个对象(非常规操作),this 会被替换为那个返回值——这种写法极少见,但会影响子类逻辑

方法默认不可枚举,且无法被 for...in 遍历

class 内部定义的方法(包括 constructor、普通方法、getter/setter)都会被设置为 enumerable: false,这是与字面量对象的关键区别。

立即学习Java免费学习笔记(深入)”;

  • Object.keys(MyClass.prototype) 返回空数组;而 Object.getOwnPropertyNames(MyClass.prototype) 能拿到方法名
  • 静态方法(static method())挂载在类本身上,MyClass.method() 可调,但 instance.method() 不可调
  • 箭头函数不能用作类方法:写成 method = () => {} 是类字段(class field),属于实例属性,每次 new 都新建函数,不共享,且无法被子类 super.method() 调用

真正容易被忽略的是:class 的静态属性(如 MyClass.prop = 1)和原型属性(如 MyClass.prototype.prop = 1)依然可以手动添加,但这类写法破坏封装性,也绕过了 class 的语义边界。当需要动态扩展行为时,优先考虑组合或装饰器模式,而不是在运行时修补原型。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
es6新特性
es6新特性

es6新特性有:1、块级作用域变量;2、箭头函数;3、模板字符串;4、解构赋值;5、默认参数;6、 扩展运算符;7、 类和继承;8、Promise。本专题为大家提供es6新特性的相关的文章、下载、课程内容,供大家免费下载体验。

106

2023.07.17

es6新特性有哪些
es6新特性有哪些

es6的新特性有:1、块级作用域;2、箭头函数;3、解构赋值;4、默认参数;5、扩展运算符;6、模板字符串;7、类和模块;8、迭代器和生成器;9、Promise对象;10、模块化导入和导出等等。本专题为大家提供es6新特性的相关的文章、下载、课程内容,供大家免费下载体验。

197

2023.08.04

JavaScript ES6新特性
JavaScript ES6新特性

ES6是JavaScript的根本性升级,引入let/const实现块级作用域、箭头函数解决this绑定问题、解构赋值与模板字符串简化数据处理、对象简写与模块化提升代码可读性与组织性。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

231

2025.12.24

go语言 面向对象
go语言 面向对象

本专题整合了go语言面向对象相关内容,阅读专题下面的文章了解更多详细内容。

58

2025.09.05

java面向对象
java面向对象

本专题整合了java面向对象相关内容,阅读专题下面的文章了解更多详细内容。

63

2025.11.27

c语言const用法
c语言const用法

const是关键字,可以用于声明常量、函数参数中的const修饰符、const修饰函数返回值、const修饰指针。详细介绍:1、声明常量,const关键字可用于声明常量,常量的值在程序运行期间不可修改,常量可以是基本数据类型,如整数、浮点数、字符等,也可是自定义的数据类型;2、函数参数中的const修饰符,const关键字可用于函数的参数中,表示该参数在函数内部不可修改等等。

562

2023.09.20

class在c语言中的意思
class在c语言中的意思

在C语言中,"class" 是一个关键字,用于定义一个类。想了解更多class的相关内容,可以阅读本专题下面的文章。

870

2024.01.03

python中class的含义
python中class的含义

本专题整合了python中class的相关内容,阅读专题下面的文章了解更多详细内容。

30

2025.12.06

C# ASP.NET Core微服务架构与API网关实践
C# ASP.NET Core微服务架构与API网关实践

本专题围绕 C# 在现代后端架构中的微服务实践展开,系统讲解基于 ASP.NET Core 构建可扩展服务体系的核心方法。内容涵盖服务拆分策略、RESTful API 设计、服务间通信、API 网关统一入口管理以及服务治理机制。通过真实项目案例,帮助开发者掌握构建高可用微服务系统的关键技术,提高系统的可扩展性与维护效率。

3

2026.03.11

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
React 教程
React 教程

共58课时 | 6万人学习

TypeScript 教程
TypeScript 教程

共19课时 | 3.4万人学习

Bootstrap 5教程
Bootstrap 5教程

共46课时 | 3.6万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号