用new关键字调用构造函数可批量创建独立对象实例,每次new生成新对象并绑定this,属性方法写入其中互不影响;构造函数首字母大写且必须配合new使用;实例化过程包含创建空对象、链接原型、绑定this、执行代码四步;支持传参创建结构相同值不同的对象;方法应定义在prototype上以避免重复创建。

用 new 关键字调用构造函数,就能批量创建多个独立的对象实例。核心在于:每次 new 都会生成一个新对象,this 指向它,属性和方法被写入其中,彼此互不影响。
构造函数的基本写法与命名规范
构造函数本质是普通函数,但有两条重要约定:
- 函数名首字母大写(如
Person、Car),这是识别构造函数的视觉信号 - 必须配合
new使用,单独调用会导致this指向全局对象(非严格模式下)或undefined(严格模式下)
用 new 实例化的过程(四步自动完成)
当你写下 const p1 = new Person('Alice', 25),JavaScript 内部立刻执行:
- 在内存中创建一个空对象
{} - 将该对象的
[[Prototype]]链接到构造函数的prototype对象 - 把构造函数内的
this绑定到这个新对象上 - 执行函数体代码(如赋值
this.name = name),完成后自动返回该对象(除非显式返回另一个非空对象)
传参创建结构相同、值不同的对象
构造函数支持形参,让每个实例拥有自己的数据:
function Student(name, grade, major) {
this.name = name;
this.grade = grade;
this.major = major;
this.introduce = function() {
console.log(`我是${this.name},读${this.grade}年级,专业是${this.major}`);
};
}
const s1 = new Student('张三', '大二', '计算机');
const s2 = new Student('李四', '大三', '数学');
const s3 = new Student('王五', '研一', '物理');
每个 s1、s2、s3 都是独立对象,修改其中一个的 name 不会影响其他。
注意实例方法重复定义的问题
上面例子中,introduce 方法在每个实例上都新建一次,造成内存浪费。更优做法是把方法挂到构造函数的 prototype 上:
Student.prototype.introduce = function() {
console.log(`我是${this.name},读${this.grade}年级,专业是${this.major}`);
};
这样所有实例共享同一个方法,节省内存,也便于后期统一维护。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











