返回
前端基础精讲:原型篇(上)
前端
2023-12-02 23:38:08
在这篇文章中,我们将讨论 JavaScript 中的原型是什么,以及在 JavaScript 中如何实现面向对象编程。
JavaScript 是一种基于原型的语言,这意味着它不使用类,而是使用原型来创建对象。原型是用于创建新对象的模板,它包含了对象的属性和方法。
当您使用 new 创建新对象时,JavaScript 引擎会创建一个该构造函数的拷贝,然后将该拷贝作为新对象的原型。这使得您可以通过原型向对象添加属性和方法,而无需修改构造函数本身。
例如,以下代码创建了一个名为 Person 的构造函数,该构造函数具有一个名为 name 的属性和一个名为 greet 的方法:
function Person(name) {
this.name = name;
this.greet = function() {
console.log(`Hello, my name is ${this.name}.`);
};
}
当执行上面的代码之后,JavaScript 引擎将会创建两个该构造函数的拷贝,一个是 person1 另一个是 person2。从图中可以看出,每个对象都拥有自己的 name 属性和 greet 方法。
const person1 = new Person('John');
const person2 = new Person('Mary');
person1.greet(); // Hello, my name is John.
person2.greet(); // Hello, my name is Mary.
原型还可以用于实现继承。当您创建一个新的构造函数时,您可以将另一个构造函数作为其原型。这使得您可以复用另一个构造函数的属性和方法,而无需重新编写它们。
例如,以下代码创建了一个名为 Employee 的构造函数,该构造函数继承了 Person 构造函数:
function Employee(name, title) {
Person.call(this, name);
this.title = title;
}
Employee 构造函数继承了 Person 构造函数的 name 属性和 greet 方法。此外,Employee 构造函数还添加了一个新的 title 属性。
const employee = new Employee('John', 'Software Engineer');
employee.greet(); // Hello, my name is John.
console.log(employee.title); // Software Engineer
原型是 JavaScript 中一个非常重要的概念。它允许您创建对象、添加属性和方法,以及实现继承。如果您想在 JavaScript 中编写面向对象代码,那么您需要对原型有一个很好的理解。