Я хочу взять объект и массив функций и вернуть массив.Я пытаюсь использовать цикл for здесь.
У меня есть следующий код:
const fnArr = [
function firstName() {
return this.first;
},
function lastName() {
return this.last;
},
];
const obj = { first: 'Nimit', last: 'Maru' };
function callAll(obj, fnArr){
let newArray = [];
for (let i=0; i<fnArr.length; i++){
let eachFunc = fnArr[i];
return newArray.push(eachFunc.call(obj))
}
}
callAll(obj, fnArr)
Мой ожидаемый вывод:
['Nimit', 'Maru']
Но вывод из моего личного кода возвращается: 1
Вопрос 1: Что я здесь не так делаю?
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Кроме того, решение, которое мне было дано ниже:
const fnArr = [
function firstName() {
return this.first;
},
function lastName() {
return this.last;
},
];
const obj = { first: 'Nimit', last: 'Maru' };
const callAll = (obj, fnArr) => {
return fnArr.map(fn => {
return fn.call(obj);
});
};
Это дает правильный ответ.
Вопрос 2: В приведенном выше коде решения зачем мне нужен метод вызова в "return fn.call (obj)"?
Мы будем очень благодарны за концептуальное объяснение того, когда вам нужно или не нужно звонить в таких ситуациях.