개발
thisArg는 무엇일까
카레공
2022. 5. 27. 19:53
⚠️thisArg
아래와 thisArg라는 콜백함수를 발견 할 수 있었지만 이해할 수 없었다
arr.findIndex(callback(element[, index[, array]])[, thisArg])
그래서 검색해 보았다
https://ktpark1651.tistory.com/215
결국 위 글에서는 'thisArg 는 Optional 인자로, thisArg를 인자로 넘기면 runtime이 callback을 호출할 때 이를 this로 설정한다라고 정의한다 (이해불가)
function test() {
let result1, result2;
var arr3 = [
{ num: 0, name: "홍길동" },
{ num: 1, name: "박보검" },
{ num: 2, name: "강호동" },
];
function isPositibeNum(value) {
console.log(this); // Window객체를 반환한다.. ???
return value.num > 0;
}
const result3 = arr3.find(isPositibeNum);
console.log(result3); // { num: 1, name: "박보검" }, 조건에 맞는 첫번째 객체를 소환
return `완료`;
}
//thisArg에 this값 바꿔주기
function isPositibeNum(value) {
console.log(this);
return value.num > this;
}
const result3 = arr3.find(isPositibeNum, 0);
console.log(result3); //{ num: 1, name: "박보검" }, 조건에 맞는 첫번째 객체를 소환
string을 this로 전달하면 어떻게 될까?
console.log(typeof arr3[2].name); //string
function isPositibeNum(value) {
console.log(this); // ▶String {"강호동"} 0:"강" 1:"호" 2"동" 이라는 스트링 객체가 나온다
return value.name == this; //타입이 다르니 ==대소비교를 이렇게 해야 아래와같은 결과가 나온다
}
const result3 = arr3.find(isPositibeNum, "강호동");
console.log(result3); // {num: 2, name: '강호동'}
return `완료`;
여기서 string과 String 객체가 따로 있다는걸 깨닫고 간다.