JavaScript 构造函数、原型与原型链详解

作者:纸飞机时间:2026-10-24 22:51:37浏览:156

本文详细解析 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、原型、构造函数与实例之间的关系?

1、什么是构造函数?

Object.prototype 的隐式原型,即 Object.prototype._proto_ 最终指向 null

几条关键公式:

Object.__proto__ === Function.prototype;
Function.prototype.__proto__ === Object.prototype;
Object.prototype.__proto__ === null;

6、什么是原型链?

对象可以根据 __proto__ 属性去查找方法,直到找到所需方法或到达顶层为止。这个查找过程所依赖的 __proto__ 链接序列,便被称为原型链(此处为通俗化解释)。

7、类?

类是一种语法糖,本质上是构造函数的另一种写法。

总结

本文到此结束,希望能为读者提供帮助,同时也欢迎关注本站以获取更多相关内容!

作者最新文章