javascript中原型对象挂载公共方法的核心是将函数赋值给构造函数的prototype属性,使所有实例共享同一份方法以节省内存;class语法中普通方法自动挂载到原型,而构造函数内定义方法会导致重复创建和无法继承。

JavaScript 中原型对象挂载公共方法,核心就是把函数赋值给构造函数的 prototype 属性。这样做能让所有实例共享同一份方法,不重复创建,节省内存,也符合原型继承的设计本意。
直接在 prototype 上添加方法
这是最基础、最常用的方式。构造函数创建后,直接往它的 prototype 对象上添加函数:
function Person(name) { this.name = name; }Person.prototype.sayHi = function() { return `Hi, I'm ${this.name}`; };- 之后每个
new Person()实例都能调用sayHi(),且它们内部引用的是同一个函数。
使用 class 语法时的默认行为
ES6 的 class 写法本质是语法糖,普通方法会自动挂到原型上:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
class Animal { constructor(type) { this.type = type; } speak() { return `${this.type} makes a sound`; } }-
speak()方法等价于写在Animal.prototype.speak上。 - 验证方式:
Animal.prototype.speak是函数;new Animal('dog').hasOwnProperty('speak')返回false。
避免常见错误:别在构造函数里重复定义方法
如果在 constructor 或类字段中用函数表达式或箭头函数赋值,方法就变成实例私有,不再共享:
- ❌ 错误(浪费内存):
this.speak = function() { ... };或speak = () => { ... }; - ✅ 正确(挂原型):
speak() { ... }(class 内普通方法)或显式写Constructor.prototype.method = ... - 私有方法会导致每个实例都存一份副本,无法被子类通过原型链继承。
批量挂载多个方法(可选技巧)
想一次性添加多个方法,可以用 Object.assign 批量写入原型:
Object.assign(Person.prototype, {sayHi() { return `Hi, ${this.name}`; },sayBye() { return `Bye, ${this.name}`; }});- 效果和逐个赋值一致,代码更紧凑,适合初始化阶段集中定义。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










