javascript类的方法必须定义在class关键字后的花括号{}内(即类体中):实例方法无static、静态方法加static、constructor为唯一特殊方法;类体外、var/let声明、html事件属性中均非法。

JavaScript 类定义中的方法写在类体的一对花括号 {} 里面,也就是 class 关键字后紧跟的 {} 区域中。
这个区域就是类体(class body),所有实例方法、静态方法、getter/setter、构造函数等,都必须定义在这里。
实例方法定义位置
直接写在类体内,不加修饰符(如 static),属于每个实例对象:
class Person {
constructor(name) {
this.name = name;
}
// ✅ 实例方法:定义在类体内部,无 static
sayHello() {
console.log(`Hello, I'm ${this.name}`);
}
}
调用方式:new Person('Alice').sayHello()
注意:不能在类外部直接定义实例方法,也不能写在 prototype 上(那是旧式构造函数写法,不是 class 语法)。
静态方法定义位置
在方法名前加 static 关键字,也写在类体 {} 内:
class Person {
static createAnonymous() {
return new Person('Anonymous');
}
}
调用方式:Person.createAnonymous()
⚠️ 不可使用 this 访问实例属性,也不能通过实例调用(如 p.createAnonymous() 会报错)。
构造函数的位置
constructor() 是一个特殊方法,也必须放在类体中,且只能有一个:
class Person {
constructor(name, age) {
this.name = name;
this.age = age;
}
}
如果省略,JavaScript 会自动提供一个空的 constructor()
不能定义方法的地方
- 类体外(比如直接写
Person.prototype.walk = ...)→ 这是原型扩展,不属于 class 定义本身 - 类体内但用
var/let声明函数 → 语法错误,class 体内只允许方法、getter/setter、static 字段等合法成员 - HTML 标签的事件属性里(如
onclick="...")→ 那是内联脚本,和类定义无关
类体就是方法的“法定住所”,所有符合 class 语法的方法都得安顿在这里。写错位置,要么报错,要么脱离类结构,起不到预期作用。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











