javascript中构造函数配合原型对象是经典面向对象方式:实例独享属性,方法共享于prototype以节省内存;构造函数初始化this属性,方法挂载prototype,new创建实例验证共享性,首字母大写、避免重写prototype等为最佳实践。

在 JavaScript 中,使用构造函数配合原型对象创建对象,是一种经典且规范的面向对象编程方式。它能有效实现属性和方法的合理分配:实例独享属性,共享方法,避免内存浪费。
构造函数定义实例属性
构造函数负责初始化每个实例独有的数据,比如姓名、年龄等。它通过 this 绑定到新创建的对象上:
function Person(name, age) {<br>
this.name = name;<br>
this.age = age;<br>
}
方法统一挂载到原型对象
所有实例共用的方法(如 sayHello)应定义在构造函数的 prototype 上,而不是在构造函数内部用 this.method = function() {...},否则每次新建实例都会重复创建函数,浪费内存:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
Person.prototype.sayHello = function() {<br>
console.log('Hello, I am ' + this.name);<br>
};<br>
Person.prototype.getAge = function() {<br>
return this.age;<br>
};
创建实例并验证共享性
用 new 调用构造函数生成实例,它们共享原型上的方法,但拥有独立的属性:
const p1 = new Person('Alice', 25);<br>
const p2 = new Person('Bob', 30);<br><br>
p1.sayHello(); // Hello, I am Alice<br>
p2.sayHello(); // Hello, I am Bob<br>
console.log(p1.sayHello === p2.sayHello); // true(同一函数引用)
补充建议与注意事项
- 构造函数名首字母大写是约定俗成的规范,便于区分普通函数
- 可结合 Object.defineProperty 在 prototype 上定义不可枚举或只读方法(如设置
writable: false) - ES6 的 class 语法本质就是这种模式的语法糖,底层仍基于构造函数 + 原型
- 避免直接重写整个 prototype(如
Person.prototype = {...}),否则会丢失默认的 constructor 指向;若必须重写,记得手动恢复:Person.prototype.constructor = Person
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










