Мне было интересно, могу ли я устранить дублируемую строку в приведенной ниже функции, но не смог прийти к нерекурсивному решению.Можно ли записать эту функцию нерекурсивно и без избыточной строки?
Просто из любопытства, есть ли способ устранить дублируемую линию, но без рекурсии?
function accumulateOverProtos(obj, propName) {
var accumulator = []
if (obj.hasOwnProperty(propName)) accumulator.push(obj[propName])
while (obj = Object.getPrototypeOf(obj)) {
if (obj.hasOwnProperty(propName)) accumulator.push(obj[propName])
}
return accumulator
}
Кроме того, может ли кто-нибудь указать мне на некоторые чтения по этому поводу? Что называется этой проблемой/проблемой?
?? Я не вижу рекурсии в этом коде. – Pointy
Рекурсии нет, но я пришел к рекурсивному решению без избыточности. Просто не публиковал. –
Вы ищете цикл 'do while'. – SLaks