Встроенные прототипы

27-07-24 11:41:42


Image for the Встроенные прототипы

Прототипы объектов (Object Prototypes)

Все объекты в JavaScript наследуются от Object.prototype. Этот прототип предоставляет несколько методов, которые можно использовать для работы с объектами.

Пример:

const obj = { a: 1, b: 2 };

// Использование метода hasOwnProperty
console.log(obj.hasOwnProperty('a')); // true

// Использование метода toString
console.log(obj.toString()); // [object Object]

// Использование метода valueOf
console.log(obj.valueOf()); // { a: 1, b: 2 }

Методы hasOwnProperty, toString, и valueOf являются частью Object.prototype, и они доступны всем объектам.

Прототипы массивов (Array Prototypes)

Массивы в JavaScript наследуются от Array.prototype, который предоставляет множество методов для работы с массивами.

Пример:

​const arr = [1, 2, 3, 4, 5];

// Использование метода forEach
arr.forEach(num => console.log(num)); // 1 2 3 4 5

// Использование метода map
const doubled = arr.map(num => num * 2);
console.log(doubled); // [2, 4, 6, 8, 10]

// Использование метода filter
const even = arr.filter(num => num % 2 === 0);
console.log(even); // [2, 4]

Методы forEach, map, и filter являются частью Array.prototype, и они доступны всем массивам.

Прототипы функций (Function Prototypes)

Функции в JavaScript наследуются от Function.prototype, который предоставляет методы, связанные с выполнением функций и их контекстом.

Пример:

​function greet() {
console.log('Hello, World!');
}

// Использование метода call
greet.call(); // Hello, World!

// Использование метода apply
greet.apply(); // Hello, World!

// Использование метода bind
const boundGreet = greet.bind();
boundGreet(); // Hello, World!

Методы call, apply, и bind являются частью Function.prototype, и они доступны всем функциям.

Прототипы строк (String Prototypes)

Строки в JavaScript наследуются от String.prototype, который предоставляет методы для работы с текстовыми данными.

Пример:

​const str = 'Hello, World!';

// Использование метода charAt
console.log(str.charAt(0)); // H

// Использование метода toUpperCase
console.log(str.toUpperCase()); // HELLO, WORLD!

// Использование метода split
const words = str.split(' ');
console.log(words); // ['Hello,', 'World!']

Методы charAt, toUpperCase, и split являются частью String.prototype, и они доступны всем строкам.

Прототипы чисел (Number Prototypes)

Числа в JavaScript наследуются от Number.prototype, который предоставляет методы для работы с числовыми данными.

Пример:

​const num = 123.456;

// Использование метода toFixed
console.log(num.toFixed(2)); // 123.46

// Использование метода toString
console.log(num.toString()); // '123.456'

// Использование метода valueOf
console.log(num.valueOf()); // 123.456

Методы toFixed, toString, и valueOf являются частью Number.prototype, и они доступны всем числам.

Прототипы логических значений (Boolean Prototypes)

Логические значения в JavaScript наследуются от Boolean.prototype, который предоставляет методы для работы с логическими данными.

Пример:

​const bool = true;

// Использование метода toString
console.log(bool.toString()); // 'true'

// Использование метода valueOf
console.log(bool.valueOf()); // true

Методы toString и valueOf являются частью Boolean.prototype, и они доступны всем логическим значениям.

Расширение встроенных прототипов

JavaScript позволяет расширять встроенные прототипы, добавляя к ним новые методы. Однако это нужно делать с осторожностью, чтобы избежать конфликтов с будущими версиями языка или сторонними библиотеками.

Пример:

​// Добавление нового метода в String.prototype
String.prototype.reverse = function() {
return this.split('').reverse().join('');
};

const str = 'Hello';
console.log(str.reverse()); // 'olleH'

В этом примере мы добавили метод reverse в String.prototype, который теперь доступен для всех строк.