javascript中构造函数配合new创建对象,其执行分四步:创建空对象、设置原型链、绑定this并执行函数、返回新对象;首字母大写为约定,内部用this初始化属性,避免不加new调用。

在 JavaScript 中,构造函数配合 new 关键字使用,是创建特定类型对象的传统方式。它本质是通过执行构造函数并自动设置新对象的原型链,来生成一个实例。
构造函数的基本写法
构造函数本质上是一个普通函数,但习惯上首字母大写,用来区分普通函数。它内部通常用 this 绑定属性和方法到即将创建的新对象上:
- 函数名首字母大写(如
Person),是一种约定,不是语法强制 - 函数体内使用
this.xxx = xxx初始化实例属性 - 一般不写
return;若返回非空对象,则会覆盖默认创建的对象(极少这么用)
new 的四步执行过程
当你写 const p = new Person('Alice', 25),JavaScript 引擎会自动完成以下四件事:
- 创建一个全新的空对象(
{}) - 将该对象的
[[Prototype]](即__proto__)指向构造函数的prototype对象 - 将构造函数内的
this绑定到这个新对象,并执行函数体 - 若构造函数没有显式返回对象,则默认返回这个新对象
验证实例与原型的关系
可以通过以下方式确认实例是否正确关联了原型:
-
p instanceof Person→true -
p.__proto__ === Person.prototype→true -
Person.prototype.constructor === Person→true(注意:手动重写prototype时可能丢失该引用)
常见注意事项
避免直接调用构造函数而不加 new,否则 this 会指向全局对象(非严格模式)或 undefined(严格模式),导致意外行为:
- 非严格模式下:
Person('Bob', 30)可能把属性挂到window上 - 可在构造函数开头加
if (!(this instanceof Person)) throw new Error(...)做防护 - 现代开发更推荐用
class语法(底层仍是基于原型),可配合new.target判断是否被new调用
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











