JavaScript/4주차

5. 콜백 함수 - 객체의 메서드 전달 시 this

tnals634 2023. 5. 25. 12:02
//이 object는 2가지의 속성을 가진다.
//1.vals라는 배열을 가졌고,
//2.logValues라는 함수를 가졌다.
var obj = {
    vals: [1, 2, 3],
    logValues: function (v, i) {
        console.log(">>> test start");
        console.log(this,v,i);
        console.log(">>> test ends");
    },
};

//method로서 호출
obj.logValues(1,2); //{ vals: [ 1, 2, 3 ], logValues: [Function: logValues] } 1 2
//콜백 함수로 들어가보자.
//forEach, map, filter
var obj = {
    vals: [1, 2, 3],
    logValues: function (v, i) {
        console.log(">>> test start");
        if(this === global){
            console.log("this가 global, 원하지않는 결과");
        }else {
            console.log(this,v,i);
        }
        console.log(">>> test ends");
    },
};

//메서드의 형태처럼 보이나 함수 자체를 넣은거다.
[4, 5, 6].forEach(obj.logValues);

//함수를 매개변수로 넣는다는건 함수 그자체를 넣어야하기때문에
//아래와 같이 넣으면 함수 자체가 아닌 함수 결과를 넣는거다.
// [4, 5, 6].forEach(obj.logValues(1,2));