JavaScript中用构造函数实现类的核心是定义首字母大写的函数作为构造器,通过new调用初始化this属性,并将共用方法挂载到prototype上以实现共享;需注意重写prototype时手动修复constructor指向。

JavaScript 中用构造函数实现基础类,核心是定义一个函数作为构造器,通过 new 调用它来创建实例,并把共用方法挂到其 prototype 上。
定义构造函数并初始化实例属性
构造函数本质是一个普通函数,约定首字母大写。它接收参数,在内部用 this 绑定实例属性:
function Person(name, age) {
this.name = name;
this.age = age;
}这样每次用 new Person('Alice', 25) 就会生成一个带 name 和 age 属性的新对象。
把方法添加到 prototype 实现共享
为避免每个实例重复创建方法,应将方法写在构造函数的 prototype 上:
立即学习“Java免费学习笔记(深入)”;
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
Person.prototype.sayHello = function() {
return `Hello, I'm ${this.name}`;
};
<p>Person.prototype.haveBirthday = function() {
this.age += 1;
};所有 Person 实例都能访问这两个方法,且它们共用同一份函数体,节省内存。
检查实例类型和原型关系
可用 instanceof 判断对象是否由某构造函数创建:
const p = new Person('Bob', 30);-
p instanceof Person→true -
p.constructor === Person→true(前提是没改写constructor) -
Person.prototype.isPrototypeOf(p)→true
注意 constructor 属性的指向
如果重写整个 prototype(比如赋值为一个新对象),默认的 constructor 会丢失,需手动修复:
Person.prototype = {
constructor: Person, // 必须显式设置
sayHello() { /* ... */ }
};否则 new Person().constructor 会返回 Object,影响类型识别和继承链。

















