JavaScript 构造函数、原型与原型链详解
本文详细解析 JavaScript 中构造函数的定义与特征,阐述通过 new 关键字实例化对象时的内部执行步骤。重点讲解原型(prototype)与隐式原型(__proto__)的关系,以及原型链的查找机制,帮助开发者深入理解 JS 面向对象编程的核心概念。
1、什么是构造函数?
若一个函数旨在通过 new 关键字来创建对象,则该函数被称为构造函数。
具体示例如下:
function Father(name,age){this.name = name;this.age = age;}function Father(name,age){
this.name = name;
this.age = age;
}
构造函数具备以下显著特征:
(1)、首字母大写
(2)、构造函数应当使用 new 关键字进行调用
(3)、调用构造函数后会返回一个对象
(4)、关于构造函数的返回值处理
- 若返回值是数字、字符串或布尔值,则直接忽略,视为无效返回。
- 若返回值是对象,则使用返回的那个对象作为最终结果。
(5)、构造函数内部的 this 指向
在构造函数中使用 this 时,它指向的是正在被创建的新对象。
2、如何通过构造函数创建一个对象?
利用 new 关键字即可创建,这一过程在术语上称为实例化,具体代码示例如下:
const let = new Father('jhony',34);3、使用 new 创建对象时发生了什么?
在内存中创建一个新对象 {};将该新对象的 [[Prototype]](Chrome 浏览器中显示为 __proto__)指向构造函数的 prototype 属性;将 this 绑定到新对象上,并执行 fn.apply(obj, this);为新对象添加属性;如果构造函数返回非空对象,则返回该对象;否则,返回刚才创建的新对象。
[[Prototype]] 属性是隐藏的,不过目前大部分新浏览器使用 __proto__ 来表示。构造函数的 prototype 属性则是我们可以显式访问的。
4、什么是原型?
Father.prototype 即为原型,它是一个对象,通常也被称为原型对象。
原型用于共享方法,且原型中的 this 指向具体的实例。
例如 Father.protoype.getAge 可以共享一个方法,而不会为每个实例开辟独立的空间。
5、原型、构造函数与实例之间的关系?

Object.prototype 的隐式原型,即 Object.prototype._proto_ 最终指向 null
几条关键公式:
Object.__proto__ === Function.prototype;
Function.prototype.__proto__ === Object.prototype;
Object.prototype.__proto__ === null;
6、什么是原型链?
对象可以根据 __proto__ 属性去查找方法,直到找到所需方法或到达顶层为止。这个查找过程所依赖的 __proto__ 链接序列,便被称为原型链(此处为通俗化解释)。
7、类?
类是一种语法糖,本质上是构造函数的另一种写法。
总结
本文到此结束,希望能为读者提供帮助,同时也欢迎关注本站以获取更多相关内容!
JS动态构建复杂嵌套JSON对象的方法
2026-11-05 15:41:52
JS负数取余为什么是负数?详解余数与模运算区别
2026-11-05 13:34:41
JS 解压出现乱码或报错怎么解决?
2026-11-05 12:32:38
JS 中 startsWith、indexOf 与正则判断字符串前缀的对比
2026-11-04 22:19:43
JS解析Excel后怎么将数据转换为JSON格式
2026-11-04 20:58:28
