В чём разница между ES6-классами и конструкторами функций?
Сначала рассмотрим примеры.
Функция-конструктор:
Основная разница между конструкторами и классами проявляется при использовании наследования. Если нам нужно создать класс Student, являющийся подклассом класса Person, и добавить к этому новому классу поле studentId, то вот как будет выглядеть код, в котором используются конструкторы, и код, в котором применяются классы.
Функция-конструктор:
👉 @frontendInterview
Сначала рассмотрим примеры.
Функция-конструктор:
function Person(name) {
this.name = name;
}
ES6-класс: class Person {
constructor(name) {
this.name = name;
}
}
Если речь идёт о создании простых объектов, то конструкторы и классы, используемые для этой цели, выглядят очень похоже.Основная разница между конструкторами и классами проявляется при использовании наследования. Если нам нужно создать класс Student, являющийся подклассом класса Person, и добавить к этому новому классу поле studentId, то вот как будет выглядеть код, в котором используются конструкторы, и код, в котором применяются классы.
Функция-конструктор:
function Student(name, studentId) {
// Вызываем конструктор суперкласса для инициализации полей, унаследованных от него.
Person.call(this, name);
// Инициализация собственных полей объекта.
this.studentId = studentId;
}
Student.prototype = Object.create(Person.prototype);
Student.prototype.constructor = Student;
ES6-класс: class Student extends Person {
constructor(name, studentId) {
super(name);
this.studentId = studentId;
}
}👉 @frontendInterview
Software Development From A to Z (2018)
Прочитав данное руководство, вы научитесь понимать общую картину процесса разработки программного обеспечения. Эта книга проведет вас через весь процесс создания приложений, от самых основ до готового продукта: обзор бэкэнд разработки - от баз данных до протоколов связи, включая практические навыки программирования в Java, и обзор фронтенд разработки - от HTML до CSS и Vue.js. Также вы освоите тестирование с использованием Selenium.
👉 @frontendInterview
Прочитав данное руководство, вы научитесь понимать общую картину процесса разработки программного обеспечения. Эта книга проведет вас через весь процесс создания приложений, от самых основ до готового продукта: обзор бэкэнд разработки - от баз данных до протоколов связи, включая практические навыки программирования в Java, и обзор фронтенд разработки - от HTML до CSS и Vue.js. Также вы освоите тестирование с использованием Selenium.
👉 @frontendInterview
Четные, умноженные на последний
Вам дан массив чисел. Напишите функцию, которая вернет сумму чисел с четными индексами умноженные на число с последним индексом.
Пример:
👉 @frontendInterview
Вам дан массив чисел. Напишите функцию, которая вернет сумму чисел с четными индексами умноженные на число с последним индексом.
Пример:
evenLast([2, 3, 4, 5]) => 30👉 @frontendInterview
Графика на JavaScript
В этой книге рассказывается, как, работая с JavaScript, jQuery, DHTML и элементом Canvas (холст), появившимся в HTML5, создавать насыщенные веб-приложения для ПК и мобильных устройств. С появлением HTML5 и усовершенствованной браузерной поддержки язык JavaScript стал исключительно удобным для создания высокопроизводительной веб-графики.
Опытный веб-разработчик, прочитав данное издание, на практических примерах изучит интересные и полезные подходы к созданию аркадных игр, эффектов DHTML и т. д. Сложные темы представлены в книге в виде легких для усвоения фрагментов.
👉 @frontendInterview
В этой книге рассказывается, как, работая с JavaScript, jQuery, DHTML и элементом Canvas (холст), появившимся в HTML5, создавать насыщенные веб-приложения для ПК и мобильных устройств. С появлением HTML5 и усовершенствованной браузерной поддержки язык JavaScript стал исключительно удобным для создания высокопроизводительной веб-графики.
Опытный веб-разработчик, прочитав данное издание, на практических примерах изучит интересные и полезные подходы к созданию аркадных игр, эффектов DHTML и т. д. Сложные темы представлены в книге в виде легких для усвоения фрагментов.
👉 @frontendInterview
Для чего обычно используются анонимные функции?
Анонимные функции используются при создании IIFE — конструкций, переменные, объявленные в которых, не загрязняют глобальную область видимости.
Анонимные функции используются при создании IIFE — конструкций, переменные, объявленные в которых, не загрязняют глобальную область видимости.
(function() {
// Какой-то код.
})();
Анонимные функции применяют в качестве функций обратного вызова, которые используются лишь в одном месте программы. Код будет выглядеть более самодостаточным и читабельным в том случае, если коллбэк будет объявлен прямо в том месте, где он используется. Это избавляет от необходимости просматривать код в поиске тела функции. setTimeout(function() {
console.log('Hello world!');
}, 1000);
Анонимные функции удобно использовать в конструкциях, характерных для функционального стиля программирования, или при работе с библиотеками вроде Lodash (этот вариант их использования похож на их применение в качестве коллбэков). const arr = [1, 2, 3];
const double = arr.map(function(el) {
return el * 2;
});
console.log(double); // [2, 4, 6]Чему равен margin-top элемента div с классом in?
Anonymous Quiz
34%
100px
44%
12.5px
14%
50px
8%
75px
В чём разница между методом Object.freeze() и ключевым словом const?
Ключевое слово const и метод Object.freeze() — это совершенно разные вещи.
Ключевое слово const применяется к привязкам (к «переменным»). Оно создаёт иммутабельную привязку, то есть — к переменной (константе), объявленной с помощью const, нельзя привязать что-то новое. Константе нельзя присвоить новое значение.
Ключевое слово const и метод Object.freeze() — это совершенно разные вещи.
Ключевое слово const применяется к привязкам (к «переменным»). Оно создаёт иммутабельную привязку, то есть — к переменной (константе), объявленной с помощью const, нельзя привязать что-то новое. Константе нельзя присвоить новое значение.
const person = {
name: "Leonardo"
};
let animal = {
species: "snake"
};
person = animal; // Uncaught TypeError: Assignment to constant variable.
Метод Object.freeze() работает со значениями. А точнее — с объектными значениями. Он делает объект иммутабельным, что защищает от изменений значения свойств этого объекта. let person = {
name: "Leonardo"
};
Object.freeze(person);
person.name = "Lima"; // Uncaught TypeError: Cannot assign to read only property 'name' of object
console.log(person);
Обратите внимание на то, что сообщение об ошибке выводится в строгом режиме. В обычном режиме операция просто не срабКошачьи и собачьи года
У меня есть кошка и собака. Они родились humanYears тому назад. Напишите функцию, которая сконвертирует humanYears в catYears и dogYears.
Правила конвертации:
Cat Years:
15 cat years в первый год
+9 cat years во второй год
+4 cat years в каждый последующий год
Dog Years
15 dog years в первый год
+9 dog years во второй год
+5 dog years в каждый последующий год
👉 @frontendInterview
У меня есть кошка и собака. Они родились humanYears тому назад. Напишите функцию, которая сконвертирует humanYears в catYears и dogYears.
Правила конвертации:
Cat Years:
15 cat years в первый год
+9 cat years во второй год
+4 cat years в каждый последующий год
Dog Years
15 dog years в первый год
+9 dog years во второй год
+5 dog years в каждый последующий год
👉 @frontendInterview
Что такое «поднятие переменных»?
Сущность концепции «поднятия переменных» заключается в том, что объявления «поднимаются» в верхнюю часть текущей области видимости. В результате переменной можно воспользоваться до её объявления. Поднимаются лишь объявления переменных, но не код их инициализации. Обратите внимание на то, что поведение переменных, объявляемых с использованием ключевого слова var, отличается от поведения переменных и констант, объявленных с использованием let и const.
👉 @frontendInterview
Сущность концепции «поднятия переменных» заключается в том, что объявления «поднимаются» в верхнюю часть текущей области видимости. В результате переменной можно воспользоваться до её объявления. Поднимаются лишь объявления переменных, но не код их инициализации. Обратите внимание на то, что поведение переменных, объявляемых с использованием ключевого слова var, отличается от поведения переменных и констант, объявленных с использованием let и const.
👉 @frontendInterview
Что выведет данный код?
Этот код выведет 0. Оператор delete используется для удаления свойств объектов. А x — это не свойство объекта — это локальная переменная. Оператор delete не воздействует на локальные переменные.
👉 @frontendInterview
Этот код выведет 0. Оператор delete используется для удаления свойств объектов. А x — это не свойство объекта — это локальная переменная. Оператор delete не воздействует на локальные переменные.
👉 @frontendInterview