JS властивість Array.constructor


Опис

Атрибут Array.constructor є специфічною властивістю у JavaScript, яка надає доступ до конструктора об'єкта. Щоб зрозуміти його сутність, уявімо, що кожен об'єкт, який ви створюєте в JavaScript, насправді "будується" за допомогою специфічного конструктора. Для масивів цим конструктором є Array. Тепер, коли ми говоримо про Array.constructor, мається на увазі властивість, яка дозволяє нам "заглянути" назад і побачити, який саме конструктор було використано для створення певного об'єкта. У нашому випадку це конструктор для масивів.

Приклад:

let arr = [1, 2, 3];
console.log(arr.constructor === Array); // true

У цьому прикладі ми створюємо масив arr і потім перевіряємо, чи було використано конструктор Array для його створення. Як бачите, відповідь true.

Проте, навіть знаючи про існування Array.constructor, в більшості випадків програмісти просто використовують Array безпосередньо, коли їм потрібно створити новий масив. Наприклад:

let newArray = new Array(5);

Цей код створює новий масив із п'яти пустих елементів.

Таким чином, хоча Array.constructor може бути корисним у специфічних випадках, для більшості завдань рекомендується просто використовувати `Array безпосередньо. Тим паче, це звичніший і більш інтуїтивний спосіб роботи з масивами у JavaScript для більшості розробників.

автор: Bond

Нотатка

Не забувайте, що Array.constructor є атрибутом прототипу Array. Тому він є загальним для всіх інстанцій масиву. Це підтверджується тим, що виклик Array.constructor для будь-якого екземпляра масиву завжди повертає однакове значення.

автор: Bond

Синтаксис

new Array()
new Array(element0)
new Array(element0, element1)
new Array(element0, element1, /* … ,*/ elementN)
new Array(arrayLength)

Array()
Array(element0)
Array(element0, element1)
Array(element0, element1, /* … ,*/ elementN)
Array(arrayLength)

Властивість constructor може отримувати 2 значень:

elementN

Масив JavaScript формується із заданими елементами. Проте існує виняток: коли до конструктора Array подається лише один аргумент, що є числом.

автор: Bond

arrayLength

Коли єдиний аргумент, який подається конструктору Array, є цілим числом і знаходиться в діапазоні від 0 до 2^32 - 1 (включаючи крайні значення), то результатом стає новий масив JavaScript із властивістю length, що дорівнює цьому числу.

автор: Bond

Винятки

Помилка в межах значень, так звана RangeError, виникає в ситуаціях, коли у нас є лише один аргумент (arrayLength), який має числове значення. Проте це число не є цілим числом або виходить за рамки допустимого діапазону - від 0 до 2^32 - 1 включно.

Переглядачі

Підтримка: стаціонарні переглядачі
Переглядач Google Chrome Mozilla Firefox Apple Safari Opera Microsoft EDGE
1 1 1 4 12
Підтримка: мобільні переглядачі
Переглядач Mobile Google Android Mobile Google Chrome Mobile Mozilla Firefox Mobile Apple Safari
37 18 4 1
Підтримка: серверні переглядачі
Переглядач Node.js Deno
0.10.0 1.0

Приклади

+ запропонувати свій приклад у пісочниці

Масив можна створити за допомогою конструктора з декількома параметрами.

const fruits = new Array("Apple", "Banana");

console.log(fruits.length); // 2
console.log(fruits[0]); // "Apple"
автор: Bond

Порівняння конструктора масиву.

Array.prototype.constructor === Array;  // true
new Array().constructor === Array;      // true
Array.prototype.constructor === Object; // false
автор: Bond

Цей приклад демонструє, як використовувати властивість constructor для визначення конструктора масива. Ми створюємо кілька масивів і виводимо їх конструктори.

автор: Bond

Масиви можна створювати за допомогою конструктора з одним числовим параметром. Масив створюється зі своєю властивістю length, встановленою на це число, і елементи масиву - це порожні слоти.

const arrayEmpty = new Array(2);

console.log(arrayEmpty.length); // 2
console.log(arrayEmpty[0]); // undefined; насправді, це порожній слот
console.log(0 in arrayEmpty); // false
console.log(1 in arrayEmpty); // false

const arrayOfOne = new Array("2"); // Не число 2, а рядок "2"

console.log(arrayOfOne.length); // 1
console.log(arrayOfOne[0]); // "2"
автор: Bond

Масиви можна створювати за допомогою літеральної нотації.

const fruits = ["Яблуко", "Банан"];

console.log(fruits.length); // 2
console.log(fruits[0]); // "Яблуко"
автор: Bond

Коментарі

Коментарів ще немає — будьте першим!

Відповідь для

Увійдіть — коментар з'явиться одразу, без капчі й очікування перевірки.

Пропозиція правки

Ваша версія — : після перевірки замінить чинну. Нова порада чи нотатка — з'явиться на сторінці після перевірки.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Ваша версія секції «»: після перевірки замінить чинну.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Ваша версія опису «»: після перевірки замінить чинну.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Зворотний зв'язок
Вхід