전에도 비슷한 문제를 겪었는데 이번에도 겪어서 정리 해두려 한다.
외부에서 json객체 배열을 넘겨받고, 이 객체 배열에 접근하려고 시도했다.
그러나, 객체 배열을 반복문이든 뭐든 사용하여 하나씩 분리하고, 분리된 객체 안의 key에 접근해서 value를 알아내려 했으나.. 일반적으로 접근하려 하니 외부에서 들어온 객체라 정의되지 않은 속성에 접근할 수 없어 빨간 밑줄이 생겼다..
ex)
// objs = [{color: "red", number: 1},{color: "blue", number: 2}] objTest(objs) { for(let obj of objs) { console.log(obj.color) // 여기 color에서 빨간 밑줄 발생 } } ...
애초에 함수 안에서 정의한 객체라면 상관 없었겠지만
외부에서 들어온 objs에 color 속성이 있는지 알 수가 없어 접근 시 오류가 발생했다.
이를 어떻게 해결해야하나 여러 시도를 해보았는데 방법을 결국 찾아냈다..
방법은 obj 뒤에 접근하고자 하는 속성을 []안에 넣어 접근하는 것이다!
위의 예시를 고치면 아래와 같다.
ex)
// objs = [{color: "red", number: 1},{color: "blue", number: 2}] objTest(objs) { for(let obj of objs) { console.log(obj.["color"]) // 빨간줄 사라짐 and color 접근 가능 } } ...
이처럼 직접 정의되지 않은 객체의 속성에 접근할 때
위의 방법으로 접근해주면 된다.