Прототипы JavaScript — это фундаментальная концепция объектно-ориентированного программирования. Они позволяют расширять и изменять поведение существующих объектов и создавать новые объекты на основе общих свойств и методов. В этой статье мы рассмотрим различные методы прототипирования в JavaScript с примерами кода, которые помогут вам понять их использование и возможности.
- Метод
Object.create():
МетодObject.create()создает новый объект с указанным объектом-прототипом и свойствами.
const personPrototype = {
greet() {
console.log(`Hello, ${this.name}!`);
}
};
const john = Object.create(personPrototype);
john.name = "John Doe";
john.greet(); // Output: Hello, John Doe!
- Метод
Object.getPrototypeOf().
МетодObject.getPrototypeOf()возвращает прототип (т. е. внутреннее свойство[[Prototype]]) объекта.
const person = {
name: "Alice"
};
const prototype = Object.getPrototypeOf(person);
console.log(prototype); // Output: {}
- Метод
Object.setPrototypeOf().
МетодObject.setPrototypeOf()устанавливает прототип (т. е. внутреннее свойство[[Prototype]]) объекта.
const person = {
name: "Bob"
};
const newPrototype = {
greet() {
console.log(`Hello, ${this.name}!`);
}
};
Object.setPrototypeOf(person, newPrototype);
person.greet(); // Output: Hello, Bob!
- Свойство
Function.prototype:
СвойствоFunction.prototypeпозволяет добавлять собственные методы или свойства ко всем функциям.
Function.prototype.logName = function() {
console.log(`Function name: ${this.name}`);
};
function sayHello() {
console.log("Hello!");
}
sayHello.logName(); // Output: Function name: sayHello
- Свойство
Array.prototype.
СвойствоArray.prototypeпредоставляет дополнительные методы для работы с массивами.
const numbers = [1, 2, 3, 4, 5];
Array.prototype.sum = function() {
return this.reduce((total, current) => total + current, 0);
};
console.log(numbers.sum()); // Output: 15
Прототипы JavaScript предлагают мощный способ гибкого расширения и изменения поведения объектов. В этой статье мы рассмотрели несколько методов-прототипов, таких как Object.create(), Object.getPrototypeOf(), Object.setPrototypeOf(), Function.prototypeи