用构造函数创建对象实例的核心是定义首字母大写的函数并用new调用,javascript自动创建空对象、绑定prototype、执行函数体、返回新对象;方法应挂载到prototype以共享节省内存。

用构造函数创建对象实例,核心是定义一个函数,用 new 关键字调用它,JavaScript 会自动创建新对象、绑定 this、执行函数体,并返回该对象。
定义构造函数
构造函数本质是普通函数,但约定首字母大写,内部用 this 绑定属性和方法:
function Person(name, age) {
this.name = name;
this.age = age;
this.sayHello = function() {
console.log('Hello, I\'m ' + this.name);
};
}
注意:函数名大写是惯例,不是语法强制;this 指向即将创建的新实例。
用 new 调用构造函数
加 new 后,JavaScript 会做四件事:
- 创建一个空对象({})
- 将这个对象的
[[Prototype]]指向构造函数的prototype - 执行构造函数,
this指向该新对象 - 若函数无显式
return对象,则自动返回该新对象
const alice = new Person('Alice', 28);
const bob = new Person('Bob', 32);
console.log(alice.name); // 'Alice'
alice.sayHello(); // 'Hello, I\'m Alice'
避免常见错误
- 忘记写 new:函数会作为普通函数执行,
this指向全局对象(非严格模式下),导致意外污染 - 构造函数返回原始值(如字符串、数字):会被忽略,仍返回新对象;只有返回对象才生效
- 把箭头函数当构造函数:箭头函数没有
prototype和自己的this,不能用new
配合 prototype 提升效率
如果把方法写在构造函数内(如上面的 sayHello),每个实例都会重复创建一份函数。更优做法是把共享方法挂到 prototype 上:
function Person(name, age) {
this.name = name;
this.age = age;
}
Person.prototype.sayHello = function() {
console.log('Hello, I\'m ' + this.name);
};
这样所有实例共享同一个方法,节省内存,也便于后续扩展原型链。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











