JavaScript中的类是构造函数的语法糖,基于原型机制,声明即函数,实例方法挂载在prototype上,支持constructor、static、getter/setter等特性。

JavaScript 中的 类(class) 是一种定义对象模板的语法形式,本质是构造函数的语法糖——它不改变底层原型机制,但让面向对象写法更清晰、更接近传统语言(如 Java、C++)的风格。
类就是带语法糖的构造函数
ES6 的 class 内部依然基于原型(prototype)工作。声明一个类,等同于定义一个函数;用 new 实例化,和调用构造函数完全一致:
-
typeof MyClass返回"function" -
MyClass === MyClass.prototype.constructor为true - 所有实例方法都自动挂载在
MyClass.prototype上
基本写法与 constructor
类必须用 class 关键字声明,至少隐式或显式包含一个 constructor 方法:
- 不写
constructor,系统会自动添加空的constructor() {} - 构造函数用于初始化实例属性,
this指向新创建的实例 - 类内部默认启用严格模式,无需手动写
"use strict"
示例:
立即学习“Java免费学习笔记(深入)”;
本文档主要讲述的是Android如何使用WebService接口;WebService是一种基于SOAP协议的远程调用标准。通过WebService可以将不同操作系统平台,不同语言、不同技术整合到一起。在OPhone SDK中并没有提供调用WebService的库,因此,需要使用第三方类库(KSOAP2)来调用WebService。在本文将介绍在OPhone中调用WebService的具体细节,并在最后给出一个完整的例子来演示如何使用KSOAP2来调用WebService。感兴趣的朋友可以过来看看
class Person {
constructor(name, age) {
this.name = name;
this.age = age;
}
greet() {
return `Hello, I'm ${this.name}`;
}
}
const p = new Person('Alice', 25);
p.greet(); // "Hello, I'm Alice"
类中常用功能怎么写
除了基础结构,ES6 类支持多种实用特性:
-
静态方法:用
static声明,只能通过类名调用,不能被实例访问 -
getter/setter:用
get和set定义计算属性或带校验的赋值逻辑 -
不可枚举性:类中定义的方法不会出现在
for...in或Object.keys()中 -
无变量提升:必须先声明类,再使用,否则报
ReferenceError
例如带校验的 setter:
class User {
constructor(name) {
this._name = name;
}
get name() {
return this._name.toUpperCase();
}
set name(value) {
if (value.length < 2) throw new Error('Name too short');
this._name = value;
}
}
注意几个关键限制
类不是万能的,有几条硬性规则要遵守:
- 必须用
new调用,直接执行会报错:MyClass()❌ - 类声明不会被提升,顺序很重要
- 不能用
function关键字写方法体,也不用逗号分隔方法 - 类内部不能定义普通变量(如
let x = 1),只能写方法、constructor、static、get/set
基本上就这些。用熟了你会发现,它让原型继承更可读,但底层逻辑一点没变。










