返回

从原生原型一窥 JavaScript 原型链

前端

原型 是 JavaScript 中一个重要的概念,它允许对象继承其他对象的属性和方法。原型的概念非常强大,它使我们能够创建出具有相同属性和行为的对象集合,而无需重新编写代码。

在 JavaScript 中,每个函数都有一个 prototype 属性。这个属性指向一个对象,该对象包含该函数创建的所有对象的共享属性和方法。例如,Array 函数的 prototype 属性指向一个包含所有数组共享属性和方法的对象。这意味着所有数组都自动继承了这些属性和方法。

我们还可以使用 prototype 属性来为内置对象添加新功能。例如,我们可以添加一个 reverse() 方法到 Array 函数的 prototype 属性上。这将使所有数组都可以使用 reverse() 方法来反转其元素的顺序。

原生原型 是指 JavaScript 自身核心部分中内置的对象的原型。这些对象包括 ObjectFunctionArrayStringNumberBoolean 等。原生原型的 prototype 属性指向一个包含该对象共享属性和方法的对象。例如,Object 函数的 prototype 属性指向一个包含所有对象的共享属性和方法的对象。这意味着所有对象都自动继承了这些属性和方法。

我们可以通过以下方式访问原生原型的 prototype 属性:

Object.prototype;
Function.prototype;
Array.prototype;
String.prototype;
Number.prototype;
Boolean.prototype;

原生原型的 prototype 属性可以用来做什么?

原生原型的 prototype 属性可以用来为内置对象添加新功能。例如,我们可以添加一个 reverse() 方法到 Array 函数的 prototype 属性上。这将使所有数组都可以使用 reverse() 方法来反转其元素的顺序。

Array.prototype.reverse = function() {
  this.sort(function(a, b) {
    return b - a;
  });
};

现在,我们可以使用 reverse() 方法来反转任何数组的元素顺序:

const arr = [1, 2, 3, 4, 5];
arr.reverse();
console.log(arr); // [5, 4, 3, 2, 1]

注意:

  • 在 JavaScript 中,原型是一个非常重要的概念。它使我们能够创建出具有相同属性和行为的对象集合,而无需重新编写代码。
  • 原型链是一个从子对象到父对象的对象链。它允许子对象访问父对象的所有属性和方法。
  • 原生原型是指 JavaScript 自身核心部分中内置的对象的原型。这些对象包括 ObjectFunctionArrayStringNumberBoolean 等。
  • 原生原型的 prototype 属性可以用来为内置对象添加新功能。例如,我们可以添加一个 reverse() 方法到 Array 函数的 prototype 属性上。这将使所有数组都可以使用 reverse() 方法来反转其元素的顺序。