-
2023 - 05 - 25 콜백함수 : 객체의 매서드 전달Today I Learned/TIL 05 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); 이렇게 넣어야 함.'Today I Learned > TIL 05' 카테고리의 다른 글
2023 - 05 - 27 콜백함수 ; promise, 리팩토링 (0) 2023.06.01 2023 - 05 - 26 내부this에 다른 값 바인딩하기 (0) 2023.06.01 2023 - 05 - 24 콜백함수 및 콜백함수의 제어권 (0) 2023.06.01 2023 - 05 - 22 REST API (0) 2023.06.01 2023 - 05 - 21 자료구조 map과 set, 매서드, 반복자 (0) 2023.06.01