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); 이렇게 넣어야 함.