Какой принцип работы встроенного метода в прототипе? Имеется встроенный метод hash, прототипа Object, которая принимает строку, содержащую многоуровневый доступ вот пример:obj =
person:
name: 'joe'
history:
hometown: 'bratislava'
bio:
funFact: 'I like fishing.



}
obj.hash('person.name'); // 'joe
obj.hash('person.history.bio'); // { funFact: 'I like fishing.'
obj.hash('person.history.homeStreet'); // undefine
obj.hash('person.animal.pet.needNoseAntEater'); // undefine
Вот две разные реализации hash, делают они одно и тоже
1)Object.prototype.hash = function(string)
return string.split('.').reduce(function(p,n)
return p && p[n]
}, this)
}
2)Object.prototype.hash = function(string)
var obj = this
string.split(".").forEach(function(el) {
try
obj = obj[el]

catch(e) {
obj = undefined

})
return obj

Как работает каждая?

21 Авг 2019 в 07:03
175 +1
0
Ответы
1

Первая реализация работает следующим образом:

Метод hash принимает строку и разбивает ее на массив с помощью метода split('.')Затем происходит итерация по каждому элементу массива с помощью метода reduce, начиная с объекта this (который является объектом, для которого вызван метод hash)На каждой итерации происходит проверка на существование свойства объекта с именем, указанным в текущем элементе массиваЕсли свойство существует, текущий объект обновляется на это свойствоВ конце выполнения метод возвращает конечный объект

Вторая реализация работает следующим образом:

Метод hash принимает строку и разбивает ее на массив с помощью метода split('.')Затем происходит итерация по каждому элементу массива с помощью метода forEachНа каждой итерации текущий объект обновляется на свойство текущего объекта с именем, указанным в текущем элементе массиваВ случае возникновения ошибки (если свойство не существует), текущий объект обновляется на undefinedВ конце выполнения метод возвращает конечный объект

Обе реализации выполняют одно и то же действие - проходят по уровням вложенных свойств объекта в соответствии с указанной строкой и возвращают конечный объект. Однако первая реализация использует метод reduce для итерации, в то время как вторая реализация использует метод forEach.

20 Апр в 13:08
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 90 620 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир