JavaScript原型继承是什么?如何实现代码复用?
时间:2026-01-01 14:44:37 131浏览 收藏
本篇文章向大家介绍《JavaScript原型继承是什么?如何实现代码复用?》,主要包括,具有一定的参考价值,需要的朋友可以参考一下。
JavaScript原型继承通过[[Prototype]]链实现对象间属性和方法的共享复用,构造函数prototype、实例__proto__、Object.create()及ES6 class均基于此机制,本质是对象委托。

JavaScript 中的原型继承是一种基于对象的继承机制,它不依赖类(class)结构,而是通过对象内部的 [[Prototype]] 链将一个对象与另一个对象关联起来,使前者可以访问后者的属性和方法。这种机制天然支持代码复用:多个实例共享同一个原型对象上的方法,避免重复创建函数,节省内存,也便于统一维护。
原型链是怎么工作的?
每个 JavaScript 对象都有一个隐式原型(可通过 __proto__ 访问,或更规范地用 Object.getPrototypeOf()),指向它的构造函数的 prototype 属性所引用的对象。当访问一个对象的属性时,如果该对象自身没有这个属性,引擎会沿着 [[Prototype]] 链向上查找,直到找到或到达 null。
- 函数的 prototype 是一个对象,供其实例共享方法
- 实例的 __proto__ 指向其构造函数的 prototype
- 所有普通对象最终都继承自 Object.prototype
如何用构造函数 + prototype 实现复用?
这是最经典的原型继承写法:把可复用的方法定义在构造函数的 prototype 上,而非每次在构造函数体内 this.xxx = function(){...},从而让所有实例共用同一份函数。
function Person(name) {
this.name = name;
}
Person.prototype.sayHello = function() {
return `Hello, I'm ${this.name}`;
};
const a = new Person('Alice');
const b = new Person('Bob');
console.log(a.sayHello === b.sayHello); // true —— 同一个函数,复用成功
ES6 class 只是语法糖,底层仍是原型
class 写法看起来像传统面向对象语言,但本质没变:它只是对原型继承的封装。所有 method 仍被添加到类的 prototype 上,static 方法则挂载在类本身。
- class A { method(){} } → A.prototype.method 存在
- extends 会设置子类的 prototype.__proto__ 指向父类的 prototype,构成继承链
- super 在方法中实际访问的是 [[Prototype]] 链上的上层方法
Object.create() 是更直接的原型继承方式
它跳过构造函数,直接以指定对象为原型创建新对象,适合纯对象间的委托复用。
const animal = {
eats: true,
walk() { console.log('walking...'); }
};
const rabbit = Object.create(animal);
rabbit.jumps = true;
console.log(rabbit.eats); // true —— 来自原型
rabbit.walk(); // walking... —— 复用原型方法
这种方式清晰体现了“对象委托”思想,也是实现组合式复用的常用手段。
理论要掌握,实操不能落!以上关于《JavaScript原型继承是什么?如何实现代码复用?》的详细介绍,大家都掌握了吧!如果想要继续提升自己的能力,那么就来关注golang学习网公众号吧!
-
502 收藏
-
501 收藏
-
501 收藏
-
501 收藏
-
501 收藏
-
378 收藏
-
226 收藏
-
196 收藏
-
452 收藏
-
361 收藏
-
189 收藏
-
445 收藏
-
221 收藏
-
355 收藏
-
325 收藏
-
157 收藏
-
177 收藏
-
- 前端进阶之JavaScript设计模式
- 设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
- 立即学习 543次学习
-
- GO语言核心编程课程
- 本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
- 立即学习 516次学习
-
- 简单聊聊mysql8与网络通信
- 如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
- 立即学习 500次学习
-
- JavaScript正则表达式基础与实战
- 在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
- 立即学习 487次学习
-
- 从零制作响应式网站—Grid布局
- 本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
- 立即学习 485次学习