Вопросы на собеседовании по JavaScript: Объекты
При подготовке к собеседованию по JavaScript важно хорошо понимать работу с объектами, а не заучивать определения. Именно на этой теме часто проверяют глубину знаний и практический опыт.
Вы разберетесь в создании объектов, свойствах, методах и особенностях их поведения. Вы увидите, как структурировать знания и отвечать на вопросы спокойно и по делу.
Вопросы и ответы по JavaScript
Вопрос
Каков результат выполнения следующего кода?
var dwayne = {}, daniel = { firstName: 'Daniel'}, jason = {key: 'jason'};
dwayne[daniel]=123;
dwayne[jason]=456;
console.log(dwayne[daniel]);Ответ
456
При установке свойства объекта JavaScript неявно приводит параметр к строковому значению. В данном случае dwayne и daniel являются объектами, поэтому будут преобразованы в "[object Object]".
В результате dwayne[dani] и dwayne[jason] эквивалентны dwayne["[object Object]"] и могут использоваться взаимозаменяемо. Поэтому ссылка на dwayne[jason] точно такая же, как и ссылка на dwayne[daniel].
Вопрос
Каким будет результат выполнения следующего кода?
const func = (function(a){
delete a;
return a;
})(5);
console.log(func);Ответ
5
Оператор delete используется для удаления свойств из объекта. В этом примере используется не объект, а локальная переменная. Оператор delete не влияет на локальные переменные.
Вопрос
Каков результат выполнения следующего фрагмента кода?
console.log({a:1} == {a:1});
console.log({a:1} === {a:1});Ответ
false
false
В JavaScript объекты сравниваются на основе ссылок. В приведенном выше примере сравниваются два разных объекта, поэтому их ссылки будут разными. Следовательно, мы получаем вывод false для обоих операторов.
Вопрос
Какой вариант лучше и почему?
const jamesBond = {
firstName: "Daniel",
lastName: "Craig",
getFullName: function () {
return `${this.firstName} ${this.lastName}`.trim();
}
};jamesBond.getFullName();или
class Person {
constructor(firstName, lastName) {
this.firstName = firstName;
this.lastName = lastName;
}
}Person.prototype.getFullName = function () {
return `${this.firstName} ${this.lastName}`.trim();
};const jamesBond = new Person("Daniel", "Craig");jamesBond.getFullName();Ответ
Второй вариант лучше. Так как в нем метод регистрируется в прототипе, а не в каждом объекте. Поэтому это более эффективный подход к использованию памяти.
Вопрос
В чем разница между Object и Map?
Ответ
- Объекты могут использовать в качестве ключей только строки и символы, а Map – примитивы, функции или даже объекты.
- Ключи в Map упорядочены, а в объектах нет.
- Размер Map можно определить с помощью свойства size, в то время как для объектов это относительно сложно.
- Map может работать лучше в сценариях, включающих в себя частое добавление и удаление пар ключей.
Заключение
JavaScript не очень обширный язык. Если получить четкое представление о темах, которые мы регулярно используем в JavaScript, то будет легче легко освоить их.
Комментарии