JavaScript Prototype 是什么,怎么用?

文章导读
Previous Quiz Next 在 JavaScript 中,prototype 就像一个模板。这些模板帮助对象共享属性和方法。我们不必到处重复代码,只需定义一次方法或属性,就可以轻松与其他对象实例共享。
📋 目录
  1. JavaScript 中的 Prototype 类型
  2. Object Prototype
  3. Constructor Function Prototype
  4. Function Prototype
  5. Built-in Prototype
A A

JavaScript - Prototype



Previous
Quiz
Next

在 JavaScript 中,prototype 就像一个模板。这些模板帮助对象共享属性和方法。我们不必到处重复代码,只需定义一次方法或属性,就可以轻松与其他对象实例共享。

JavaScript 中的 Prototype 类型

在 JavaScript 中,有多种类型的 prototype 用于在对象之间共享属性和方法。JavaScript 中的主要 prototype 类型有:

  • Object Prototype
  • Constructor Function Prototype
  • Function Prototype
  • Built-in Prototype

Object Prototype

object prototype 是 JavaScript 中所有对象的基础模板。这个模板在我们创建的每个对象中默认可用。它就像一张内置的工具表,每个对象都可以使用。

代码片段

以下是使用 object prototype 的示例代码片段。

let obj = {
   name: "John",
   age: 21
};
console.log(obj);
console.log(obj.toString());  // [object Object]

输出

以下是上述代码片段的输出 −

{ name: 'Ansh', age: 24 }

在上述示例中,我们创建了一个名为 obj 的对象,具有 nameage 属性。我们还使用了默认存在于 object prototype 中的 toString() 方法。

Constructor Function Prototype

constructor function 是一种用于创建新对象的功能。当我们需要创建多个具有相同属性和行为的对象的时,可以使用 constructor function。constructor function prototype 用于在通过 constructor function 创建的对象之间共享属性和方法。

代码片段

以下是使用 constructor function prototype 的示例代码片段。

function Person(name, age) {
   this.name = name;
   this.age = age;
}
Person.prototype.greet = function() {
   return "Hello, " + this.name;
}
let person1 = new Person("John", 21);
let person2 = new Person("Ansh", 24);

输出

以下是上述代码片段的输出。

Hello, John
Hello, Ansh

在上述示例中,我们创建了一个名为 Person 的 constructor function。我们还在 Person 的 prototype 中添加了一个 greet 方法。我们使用 Person constructor function 创建了两个对象 person1person2,然后在两个对象上调用了 greet 方法。

Function Prototype

function prototype 是 JavaScript 中所有函数可用的模板。这个模板用于在函数之间共享属性和方法。

代码片段

以下是使用 function prototype 的示例代码片段。

function greet() {
   return "Hello, World!";
}
console.log(greet.toString());  // function greet() { return "Hello, World!"; }

输出

以下是上述代码片段的输出。

function greet() { return "Hello, World!"; }

在上述示例中,我们创建了一个名为 greet 的函数。我们还使用了默认存在于 function prototype 中的 toString() 方法。

Built-in Prototype

JavaScript 中有许多内置对象,如 Array、String、Number 等。这些内置对象都有自己的 prototype。我们可以使用这些 prototype 在这些内置对象的实例之间共享属性和方法。

代码片段

以下是使用 built-in prototype 的示例代码片段。

let arr = [1, 2, 3, 4, 5];

console.log(arr);
console.log(arr.toString());  // 1,2,3,4,5
console.log(arr.join("-"));  // 1-2-3-4-5
console.log(arr.reverse());  // [ 5, 4, 3, 2, 1 ]

输出

[ 1, 2, 3, 4, 5 ]
1,2,3,4,5
1-2-3-4-5
[ 5, 4, 3, 2, 1 ]

在上述示例中,我们创建了一个名为 arr 的数组。我们还使用了默认存在于 array prototype 中的 toString()join()reverse() 方法。