오늘 연습문제로 풀어봤던 걸 예시로 들면
function getProperty(obj, property) {
return obj[property];
}
처음에 obj.property
로 접근을 했는데 통과가 되지 않았다.
그래서 자료를 찾아보니 dot notation으로 접근할 경우에는
예를 들어,
let obj = {
property:'xxx'
}
이런식으로 확정적으로 객체 안에 들어가있을때만 dot notation으로 접근이 가능한 것이다.
위 함수에서는 property가 변수이기 때문에 bracket notation으로 해야 올바르게 나온다.
일단 간단하게 말하면 in 키워드는 객체에서 of는 배열에서 쓰인다.
배열에서 for문을 쓸 때마다
for(let i=0;i<arr.length;i++)
이런식으로 조건을 걸었는데
for(let element of arr)
이렇게 간단하게도 표현이 가능하단걸 한번 짚고 넘어갈 수 있었다.
다만, 두번째 경우처럼 하는게 모든 테스트에서 통과될지는 아직 미지수다.(많이 써보지 않았기 때문에..)
객체를 열거시키는 for...in과 대신에 hasOwnProperty
속성도 사용 가능하다.
이 둘의 차이는 hasOwnProperty
같은 경우는 개발자가 코드에 대한 확신이 제대로 서지 않았을 때 쓴다고 한다.