温馨提示×

JS原型链怎么理解

小樊
48
2025-09-09 13:03:34
栏目: 编程语言

JavaScript 的原型链是一种实现对象间继承和属性查找的机制。在 JavaScript 中,每个对象都有一个特殊的内部属性 [[Prototype]],通常可以通过对象的 __proto__ 属性或者 Object.getPrototypeOf() 方法来访问。当我们试图访问一个对象的属性时,如果对象本身没有这个属性,JavaScript 引擎会沿着原型链向上查找,直到找到该属性或者到达原型链的顶端(null)。

原型链的工作原理如下:

  1. 创建一个构造函数(Constructor Function),用于创建对象实例。
  2. 在构造函数的原型对象(prototype)上定义属性和方法。
  3. 使用 new 关键字创建对象实例,此时对象实例的 [[Prototype]] 属性会指向构造函数的原型对象。
  4. 当访问对象实例的属性或方法时,如果对象本身没有这个属性或方法,JavaScript 引擎会沿着原型链向上查找。

下面是一个简单的例子:

// 构造函数
function Person(name) {
  this.name = name;
}

// 在原型对象上定义属性和方法
Person.prototype.sayHello = function() {
  console.log('Hello, my name is ' + this.name);
};

// 创建对象实例
var person1 = new Person('Alice');
var person2 = new Person('Bob');

// 调用原型对象上的方法
person1.sayHello(); // 输出 "Hello, my name is Alice"
person2.sayHello(); // 输出 "Hello, my name is Bob"

在这个例子中,Person 是一个构造函数,它的原型对象上有 sayHello 方法。当我们创建 Person 的实例时,这些实例的 [[Prototype]] 属性会指向 Person.prototype。因此,当我们调用 person1.sayHello()person2.sayHello() 时,JavaScript 引擎会沿着原型链找到 Person.prototype 上的 sayHello 方法并执行它。

总之,原型链是 JavaScript 中实现继承和属性查找的核心概念。通过原型链,我们可以实现对象间的属性和方法共享,从而提高代码的可重用性和效率。

0