Today I Learned/TIL 05
2023 - 05 - 25 콜백함수 : 객체의 매서드 전달
sangwoo_rhie
2023. 6. 1. 07:24
오늘할일
1. 4주차 강의
2. 개인프로젝트
3. 프로그래머스 문제
오늘 배운것 : 콜백함수 - 객체에 메서드 전달
var obj = {
values: [1, 2, 3],
logValues: function(v, i){
console.log(this, v, i);
},
};
obj.logValues(1, 2);
obj 함수는 객체안에 여러개의 인자가 있고, 그 인자들은 key값, value값 으로 나뉨.
2번째 인자의 value값은 함수값임. function( ) { }
obj.logValues(1, 2); 위 함수에서 v가 1, i가 2가 됨.
var obj = {
values: [1, 2, 3],
logValues: function(v, i){
if (this === global){
console.log('this가 global입니다. 원하지 않는 결과')
}else{
console.log(this, v, i);
}
},
};
[4, 5, 6].forEach(obj.logValues);
'this가 global입니다. 원하지 않는 결과' 3번 반복출력
매서드로써의 호출
[4, 5, 6].forEach(obj.logValues); 여기에서 obj.logValues에 해당하는 함수 function 값 전체를 넣는 꼴임.
function(obj.logValues)의 매개변수 인자 2가지
(첫번째인자 = 기준이 되는 배열의 n번째 요소. // 두번째인자 = n번째 요소의 index값)
forEach, Map, filter 다 똑같음.
[4, 5, 6].forEach (obj.logValues(1, 4)) 이런식으로 매개변수를 넣으면 그 매개변수는 함수가 아니라, 함수가 실행한 결과를 넣는 꼴임. 함수 자체를 넣어야 함.
[4, 5, 6].forEach (obj.logValues); 이렇게 넣어야 함.