У меня сложилось впечатление, что getElementsByClassName возвращает массив объектов. Отчасти это правда, он возвращает коллекцию объектов, известную как коллекция элементов html. Хотя это похоже на массив, коллекция html не имеет всех методов, которые есть у массива, таких как map() или forEach.

document.querySelectorAll() возвращает список узлов вместо коллекции элементов html. В то время как nodeList также не имеет всех методов, которые есть у объекта массива (таких как карта), у него есть forEach.

  • document.getElementsByClassName() возвращает коллекцию элементов html
  • document.querySelectorAll() возвращает список узлов.

Разница между: function Person(){}, var person = Person() и var person = new Person()?

function Person(){} // Объявление функции. Эта декларация не была вызвана.

var person = Person() //Выражение функции. var person содержит любое значение, возвращаемое при вызове функции Person().

var person = new Person() // создание экземпляра нового объекта конструктора класса Person(). Ключевое слово «новый» делает функцию конструктором класса.

В чем разница между «атрибутом» и «свойством»?

Атрибут задается для элемента html, но свойство задается для объекта node. Таким образом, если вы создаете элемент ввода с текстовым типом, при его анализе браузером в DOM создается объект HTMLInputElement. этот объект будет иметь гораздо больше свойств, унаследованных от HTMLInputElement. Атрибуты, установленные в исходном HTML-коде, также будут переведены в свойства объекта DOM. Однако некоторые свойства не будут полностью отражать атрибут. Свойство «тип» будет принимать только определенные значения, поэтому, если вы укажете тип = «текст», этот элемент dom будет иметь свойство типа для текста. но если вы установите свойство type = ‘foo’. это не будет отражено свойством типа. Если вы наберете getAttribute(type), он вернет foo. но тип свойства будет равен «текст».

Значение — это свойство объекта dom, которое отражает ввод пользователя в текстовое поле. Поэтому, если вы создаете ввод, type=text value="John", и этот текст изменяется пользователем на steve, свойство value этого узла будет читаться как "steve". тем не менее, getAttribute(value) вернет «Джон». Таким образом, в этом случае будет атрибут значения и свойство объекта значения, и они будут ссылаться на разные элементы.

«id» — чисто отражающее свойство. Получение свойства считывает значение атрибута, а установка свойства записывает значение атрибута. Он не изменяет и не ограничивает стоимость свойства.

ссылка: https://stackoverflow.com/questions/6003819/what-is-the-difference-between-properties-and-attributes-in-html

Какие языковые конструкции вы используете для перебора свойств объекта и элементов массива?

Для перебора массивов можно использовать метод forEach(), метод map() или циклы for(). Map() возвращает новый массив, часто содержащий измененные данные из исходного массива (исходный массив остается прежним). Метод forEach() не возвращает данные, но может видоизменять исходный массив, передавая значение массива в функцию обратного вызова. Или forEach можно использовать для обновления другой информации (например, для каждого элемента в вашем списке покупок добавьте item.cost к переменной общей стоимости). for loops (i=0; i.array.lenth ; i++) может перебирать массив. этот тип цикла можно использовать творчески, используя i по-разному.

Для перебора ключей объекта вы можете использовать метод объекта keys(). для перебора ключей-значений объекта вы можете использовать метод entry(). Или вы можете перебирать ключи, используя цикл (for…in).

Что такое цикл событий?

когда javascript проходит через код, он мигает

Стек вызовов — операции, которые должны выполняться одна за другой

Очередь событий — операции, ожидающие выполнения.

цикл событий — постоянно проверяет, пуст ли стек вызовов. Если это так, он просматривает очередь событий, чтобы узнать, есть ли операция, ожидающая выполнения. Если это так, он перемещает эту операцию в стек вызовов для выполнения.

асинхронные операции перемещаются в очередь событий, а не в стек вызовов. Поэтому, если вы скажете setTimeout(()=> {console.log(‘first’)}, 0), а затем console.log(‘second’), даже если для setTimeout установлено значение 0, секунда будет зарегистрирована первой. Это потому, что JS видит setTimeout и говорит: «Я поставлю вас в очередь событий и проверю позже. Сначала я продолжу и добавлю в стек вызовов другие функции, которые будут выполняться немедленно по порядку».

ссылка: https://hackernoon.com/understanding-js-the-event-loop-959beae3ac40

Доклад JS Conference о циклах событий и асинхронных функциях: https://www.youtube.com/watch?v=8aGhZQkoFbQ

В чем разница между стеком вызовов и очередью задач?

Стек вызовов — операции, которые должны выполняться одна за другой

Очередь событий — операции, ожидающие выполнения.

В чем разница между классом ES6 и конструкторами функций ES5?

Пример ES6: Class Person() {

конструктор(){}

method() {//метод прототипа объекта}

}

ES5: функция Person(name) = {

имя = это.имя

}

Person.proto.method = function() {//прототип объекта function};

Академия кодирования Остина

@lubbockCodingAcademy