객체는 중괄호로 작성하고 키(key)와 값(value)으로 구성된 프로퍼티가 들어간다. 각 프로퍼티는 쉼표로 구분한다. 마지막 쉼표는 없어도 되지만 있는 게 수정, 삭제, 이동할 때 용이하다.

객체에 접근하고 싶을 때는 점을 사용하면 된다. 혹은 대괄호도 사용할 수 있다. 추가할 때도 점이나 대괄호를 이용할 수 있다. 삭제는 delete 키워드를 사용하면 된다. 삭제하고 싶은 프로퍼티 앞에 붙여준다.

단축 프로퍼티를 사용하면 보다 간단하게 객체를 작성할 수 있다. 이 객체의 name에는 name 변수가 들어가 있고 age에는 age 변수가 들어가 있다. 즉 객체의 name은 'clark'이고 age는 '33'이다.

이 코드는 이렇게 쓸 수도 있다.

만약 존재하지 않는 프로퍼티에 접근하면 어떻게 될까? 에러가 발생하지 않고 undefined가 나온다. 이때 in 연산자를 활용하면 프로퍼티가 있는지 확인할 수 있다. 그냥 점이나 대괄호를 이용하면 될 텐데 언제 in을 쓸까? 어떤 값이 넘어올지 확신할 수 없을 때 사용하면 된다. 함수의 인자로 받거나 api 통신을 통해 데이터를 받아올 때가 그렇다.

for ... in 반복문을 사용하면 객체를 순회하면서 값을 얻어올 수 있다. for ... in 반복문은 for문보다 간단하다.

이렇게 사용한다.

객체 자체를 찍어 보면 이런 모습이다.

이제 뭔가를 추가해 본다. 추가할 때도 점이나 대괄호를 사용할 수 있다.

이렇게 지울 수도 있다.

이번에는 함수를 만들어 볼 텐데, 이름과 나이를 받아서 객체를 반환하는 함수를 만들 것이다. 만든 Mike를 찍어 보면 이렇다.

이렇게 축약해서 사용할 수도 있다.

다음은 in을 이용해서 프로퍼티가 존재하는지 확인해 본다. age는 존재하기 때문에 true, birthday는 그렇지 않으므로 false가 나왔다. 그런데 보통 이런 경우에는 점이나 대괄호로 확인이 가능하니까 별로 실용적인 예제라고는 볼 수 없다.

나이를 확인하고 성인인지 아닌지 구분하는 함수가 있다고 해보자. 인수를 user 객체로 받아 성인 여부를 확인한다. user의 age가 20보다 작을 때 성인이 아니라고 해준다. 그게 아니라면 true를 반환한다. 사실 여기에서 else는 필요가 없다. 왜냐하면 if문으로 들어오지 않으면 어차피 그 다음 명령어가 실행되기 때문이다. Mike부터 확인해 본다. Mike는 성인으로 나온다.

Jane은 어떨까? 나이가 입력되지 않았음에도 true가 나온다. user에 age가 없기 때문에 undefined가 되어 항상 true를 반환하는 것이다. 이를 올바르게 수정하면 다음과 같다. 나이가 없으면 성인이 아니라고 판단하는 편이 좋다.

다음은 for ... in 반복문 예제이다. 여기에서 key는 Mike가 가지고 있는 프로퍼티를 의미한다. 사실 다른 이름을 붙여도 상관이 없다.

key 대신 x라는 이름으로 바꿔 x가 어떤 값인지 한번 살펴 본다. 그러면 name이라는 문자열과 age라는 문자열이 나온다. 이것은 Mike가 가지고 있는 key 값들이다.

이 문자열을 이용해 저 값을 가져올 수 있다. 이 반복문은 Mike의 name과 age를 한 번씩 돌아 값을 가져올 것이다.

결과가 잘 나온다.

출처: 코딩앙마, 자바스크립트 기초 강좌 #12 - 객체(Object)
객체는 중괄호로 작성하고 키(key)와 값(value)으로 구성된 프로퍼티가 들어간다. 각 프로퍼티는 쉼표로 구분한다. 마지막 쉼표는 없어도 되지만 있는 게 수정, 삭제, 이동할 때 용이하다.

객체에 접근하고 싶을 때는 점을 사용하면 된다. 혹은 대괄호도 사용할 수 있다. 추가할 때도 점이나 대괄호를 이용할 수 있다. 삭제는 delete 키워드를 사용하면 된다. 삭제하고 싶은 프로퍼티 앞에 붙여준다.

단축 프로퍼티를 사용하면 보다 간단하게 객체를 작성할 수 있다. 이 객체의 name에는 name 변수가 들어가 있고 age에는 age 변수가 들어가 있다. 즉 객체의 name은 'clark'이고 age는 '33'이다.

이 코드는 이렇게 쓸 수도 있다.

만약 존재하지 않는 프로퍼티에 접근하면 어떻게 될까? 에러가 발생하지 않고 undefined가 나온다. 이때 in 연산자를 활용하면 프로퍼티가 있는지 확인할 수 있다. 그냥 점이나 대괄호를 이용하면 될 텐데 언제 in을 쓸까? 어떤 값이 넘어올지 확신할 수 없을 때 사용하면 된다. 함수의 인자로 받거나 api 통신을 통해 데이터를 받아올 때가 그렇다.

for ... in 반복문을 사용하면 객체를 순회하면서 값을 얻어올 수 있다. for ... in 반복문은 for문보다 간단하다.

이렇게 사용한다.

객체 자체를 찍어 보면 이런 모습이다.

이제 뭔가를 추가해 본다. 추가할 때도 점이나 대괄호를 사용할 수 있다.

이렇게 지울 수도 있다.

이번에는 함수를 만들어 볼 텐데, 이름과 나이를 받아서 객체를 반환하는 함수를 만들 것이다. 만든 Mike를 찍어 보면 이렇다.

이렇게 축약해서 사용할 수도 있다.

다음은 in을 이용해서 프로퍼티가 존재하는지 확인해 본다. age는 존재하기 때문에 true, birthday는 그렇지 않으므로 false가 나왔다. 그런데 보통 이런 경우에는 점이나 대괄호로 확인이 가능하니까 별로 실용적인 예제라고는 볼 수 없다.

나이를 확인하고 성인인지 아닌지 구분하는 함수가 있다고 해보자. 인수를 user 객체로 받아 성인 여부를 확인한다. user의 age가 20보다 작을 때 성인이 아니라고 해준다. 그게 아니라면 true를 반환한다. 사실 여기에서 else는 필요가 없다. 왜냐하면 if문으로 들어오지 않으면 어차피 그 다음 명령어가 실행되기 때문이다. Mike부터 확인해 본다. Mike는 성인으로 나온다.

Jane은 어떨까? 나이가 입력되지 않았음에도 true가 나온다. user에 age가 없기 때문에 undefined가 되어 항상 true를 반환하는 것이다. 이를 올바르게 수정하면 다음과 같다. 나이가 없으면 성인이 아니라고 판단하는 편이 좋다.

다음은 for ... in 반복문 예제이다. 여기에서 key는 Mike가 가지고 있는 프로퍼티를 의미한다. 사실 다른 이름을 붙여도 상관이 없다.

key 대신 x라는 이름으로 바꿔 x가 어떤 값인지 한번 살펴 본다. 그러면 name이라는 문자열과 age라는 문자열이 나온다. 이것은 Mike가 가지고 있는 key 값들이다.

이 문자열을 이용해 저 값을 가져올 수 있다. 이 반복문은 Mike의 name과 age를 한 번씩 돌아 값을 가져올 것이다.

결과가 잘 나온다.

출처: 코딩앙마, 자바스크립트 기초 강좌 #12 - 객체(Object)