Расскажите о шаблоне проектирования «Открытый модуль»
Шаблон «Открытый модуль» (Revealing Module) является разновидностью шаблона «Модуль» (Module). Цель использования этого шаблона заключается в поддержке инкапсуляции и в открытии некоторых свойств и методов, возвращённых в объектном литерале. На картинке представлена реализация этого шаблона.
Очевидный недостаток этого шаблона заключается в том, что при его использовании нельзя обращаться к приватным методам.
👉 @frontendInterview
Шаблон «Открытый модуль» (Revealing Module) является разновидностью шаблона «Модуль» (Module). Цель использования этого шаблона заключается в поддержке инкапсуляции и в открытии некоторых свойств и методов, возвращённых в объектном литерале. На картинке представлена реализация этого шаблона.
Очевидный недостаток этого шаблона заключается в том, что при его использовании нельзя обращаться к приватным методам.
👉 @frontendInterview
Building Web Apps with WordPress (2019)
Если у вас есть базовый опыт работы с PHP, HTML, CSS и JavaScript, вы можете использовать WordPress для разработки быстрых, масштабируемых, безопасных и настраиваемых веб-приложений, мобильных приложений, веб-сервисов. Наряду с основными функциями WordPress вы узнаете, как создавать собственные плагины, темы и сервисы практически для любого веб-приложения или мобильного приложения.
👉 @frontendInterview
Если у вас есть базовый опыт работы с PHP, HTML, CSS и JavaScript, вы можете использовать WordPress для разработки быстрых, масштабируемых, безопасных и настраиваемых веб-приложений, мобильных приложений, веб-сервисов. Наряду с основными функциями WordPress вы узнаете, как создавать собственные плагины, темы и сервисы практически для любого веб-приложения или мобильного приложения.
👉 @frontendInterview
Найти делители!
Создайте функцию, которая принимает число и возвращает в виде массива его делители
Пример:
👉 @frontendInterview
Создайте функцию, которая принимает число и возвращает в виде массива его делители
Пример:
divisors(12); // should return [2,3,4,6]
divisors(25); // should return [5]👉 @frontendInterview
HTML and CSS: Visual QuickStart Guide, 9th Edition (2020)
HTML и CSS остаются стержнем Интернета. Каждый начинающий веб-разработчик должен досконально разбираться в них, в том числе в последних достижениях в этих стандартах и новейших технологиях, основанных на них. На протяжении десятилетий будущие веб-профессионалы обращались к HTML и CSS: Visual QuickStart Guide. Это руководство было тщательно обновлено новым автором, обучившим тысячи начинающих веб-разработчиков. Данное издание содержит новые примеры и проекты, а также большое количество сопровождающего видеоконтента.
👉 @frontendInterview
HTML и CSS остаются стержнем Интернета. Каждый начинающий веб-разработчик должен досконально разбираться в них, в том числе в последних достижениях в этих стандартах и новейших технологиях, основанных на них. На протяжении десятилетий будущие веб-профессионалы обращались к HTML и CSS: Visual QuickStart Guide. Это руководство было тщательно обновлено новым автором, обучившим тысячи начинающих веб-разработчиков. Данное издание содержит новые примеры и проекты, а также большое количество сопровождающего видеоконтента.
👉 @frontendInterview
В чём разница между объектами Map и WeakMap?
Эти объекты ведут себя по-разному в том случае, если переменная, содержащая ссылку на объект, являющийся ключом одной из пар ключ/значение, оказывается недоступной.
Вот пример:
В результате оказывается, что объекты WeakMap позволяют сборщику мусора избавляться от тех своих записей, на ключи которых нет ссылок во внешних переменных
👉 @frontendInterview
Эти объекты ведут себя по-разному в том случае, если переменная, содержащая ссылку на объект, являющийся ключом одной из пар ключ/значение, оказывается недоступной.
Вот пример:
var map = new Map();После того, как завершается выполнение IIFE, у нас уже не будет доступа к объектам a и b. Поэтому сборщик мусора удаляет ключ b из weakmap и очищает память. А вот содержимое map остаётся при этом неизменным.
var weakmap = new WeakMap();
(function() {
var a = {
x: 12
};
var b = {
y: 12
};
map.set(a, 1);
weakmap.set(b, 2);
})()
В результате оказывается, что объекты WeakMap позволяют сборщику мусора избавляться от тех своих записей, на ключи которых нет ссылок во внешних переменных
👉 @frontendInterview
Что из перечисленного НЕ является псевдо-элементом?
Anonymous Quiz
40%
::first-child
1%
::after
9%
::first-letter
1%
::before
11%
::first-line
39%
::selection
Как в JavaScript-функции передаются параметры: по ссылке или по значению?
Параметры всегда передаются по значению, но в переменные, представляющие объекты, записаны ссылки на объекты. Поэтому, когда в функцию передают объект и меняют свойство этого объекта, это изменение сохраняется в объекте и при выходе из функции. В результате возникает ощущение того, что параметры в функции передаются по ссылке. Но если изменить значение переменной, представляющей объект, это изменение не повлияет на объекты, находящиеся за пределами функции.
Вот пример:
👉 @frontendInterview
Параметры всегда передаются по значению, но в переменные, представляющие объекты, записаны ссылки на объекты. Поэтому, когда в функцию передают объект и меняют свойство этого объекта, это изменение сохраняется в объекте и при выходе из функции. В результате возникает ощущение того, что параметры в функции передаются по ссылке. Но если изменить значение переменной, представляющей объект, это изменение не повлияет на объекты, находящиеся за пределами функции.
Вот пример:
function changeStuff(a, b, c) {
a = a * 10;
b.item = "changed";
c = {item: "changed"};
}
var num = 10;
var obj1 = {item: "unchanged"};
var obj2 = {item: "unchanged"};
changeStuff(num, obj1, obj2);
console.log(num);
console.log(obj1.item);
console.log(obj2.item);
Вот что выведет этот код: 10
changed
unchanged👉 @frontendInterview
Гомогенные массивы
Вам дан двумерный массив. Необходимо убрать из него массивы, в которых есть элементы разных типов.
Пример:
👉 @frontendInterview
Вам дан двумерный массив. Необходимо убрать из него массивы, в которых есть элементы разных типов.
Пример:
filterHomogenous([[1, 5, 4], ['a', 3, 5], ['b'], [], ['1', 2, 3]])
//[[1, 5, 4], ['b']].👉 @frontendInterview
Чему равен вертикальный margin между элементами p и div?
Anonymous Quiz
49%
48px
31%
80px
8%
32px
12%
16px
Как организовать «глубокую заморозку» объекта?
Для того чтобы обеспечить «глубокую заморозку» объекта с использованием Object.freeze(), нужно создать рекурсивную функцию, которая «замораживает» свойства объекта, которые также являются объектами.
Вот — «глубокая заморозка»:
👉 @frontendInterview
Для того чтобы обеспечить «глубокую заморозку» объекта с использованием Object.freeze(), нужно создать рекурсивную функцию, которая «замораживает» свойства объекта, которые также являются объектами.
Вот — «глубокая заморозка»:
function deepFreeze(object) {
let propNames = Object.getOwnPropertyNames(object);
for (let name of propNames) {
let value = object[name];
object[name] = value && typeof value === "object" ? deepFreeze(value) : value;
}
return Object.freeze(object);
}
let person = {
name: "Leonardo",
profession: {
name: "developer"
}
};
deepFreeze(person);
person.profession.name = "doctor"; // TypeError: Cannot assign to read only property 'name' of object
Сообщение об ошибке выводится лишь в строгом режиме. В обычном режиме значение не меняется без вывода сообщений об ошибках.👉 @frontendInterview
Какое значение примет result?
Anonymous Quiz
14%
[NaN, NaN, NaN]
10%
[10, NaN, 2]
4%
[2, 2, 2]
60%
[10, 10, 10]
12%
TypeErrpr
Почему JavaScript-программисты испытывают проблемы при использовании ключевого слова this?
Самое важное, что нужно понять о this, заключается в том, что у функций нет фиксированного значения this. Это значение зависит от того, как именно вызывается функция. Если мы говорим о том, что функция вызывается с некоторым конкретным значением this, это значит, что это значение определяется не во время объявления функции, а во время её вызова. Вот некоторые особенности this:
1. Если функция вызывается в обычном виде (то есть, с использованием конструкции вида someFunc()), то this будет ссылаться на глобальный объект (в браузере это window). Если код выполняется в строгом режиме, то в this будет записано значение undefined.
Если функция вызывается как метод объекта, то ключевое слово this будет представлено объектом, которому принадлежит метод.
2. Если функцию вызывают с использованием call или apply, this будет представлено тем, что указано в качестве первого аргумента call или apply.
3. Если функция вызывается в виде обработчика события, то в this будет целевой элемент события.
4. Если функцию вызывают в виде конструктора, с использованием ключевого слова new, то в this будет новый объект, прототип которого установлен в качестве свойства prototype функции-конструктора.
5. Если функция создана с использованием метода bind, то ключевое слово this функции будет жёстко привязано к значению, переданному bind в качестве первого аргумента. Это — единственное исключение из правила, в соответствии с которым функции не имеют жёстко заданного значения this. Функции, созданные с использованием bind, имеют иммутабельное значение this.
👉 @frontendInterview
Самое важное, что нужно понять о this, заключается в том, что у функций нет фиксированного значения this. Это значение зависит от того, как именно вызывается функция. Если мы говорим о том, что функция вызывается с некоторым конкретным значением this, это значит, что это значение определяется не во время объявления функции, а во время её вызова. Вот некоторые особенности this:
1. Если функция вызывается в обычном виде (то есть, с использованием конструкции вида someFunc()), то this будет ссылаться на глобальный объект (в браузере это window). Если код выполняется в строгом режиме, то в this будет записано значение undefined.
Если функция вызывается как метод объекта, то ключевое слово this будет представлено объектом, которому принадлежит метод.
2. Если функцию вызывают с использованием call или apply, this будет представлено тем, что указано в качестве первого аргумента call или apply.
3. Если функция вызывается в виде обработчика события, то в this будет целевой элемент события.
4. Если функцию вызывают в виде конструктора, с использованием ключевого слова new, то в this будет новый объект, прототип которого установлен в качестве свойства prototype функции-конструктора.
5. Если функция создана с использованием метода bind, то ключевое слово this функции будет жёстко привязано к значению, переданному bind в качестве первого аргумента. Это — единственное исключение из правила, в соответствии с которым функции не имеют жёстко заданного значения this. Функции, созданные с использованием bind, имеют иммутабельное значение this.
👉 @frontendInterview
Какое значение примет result?
Anonymous Quiz
8%
TypeError
29%
Window
47%
undefined
5%
null
12%
ReferenceError