const obj1 = {}; // 'object literal' syntax 리터럴 객체 선언방식1★
const obj2 = new Object(); // 'object constructor' syntax 생성자 객체 선언방식2★
function print(person) {
console.log(person.name);
console.log(person.age);
}
const ellie = { name : 'ellie', age: 4 };
print(ellie);
// ellie
// 4
// can add properties later
ellie.hasJob = true; // ellie object에 'hasJob' 이라는 변수값(key:value) 추가
console.log(ellie.hasJob); // true
// can delete properties later
delete ellie.hasJob;
console.log(ellie.hasJob); // undefined
프로퍼티란
객체에 대해 다루게 될 때 프로퍼티와 메소드에 대한 이해가 없으면 객체를 이해할 수 없다. 객체란 것은 결국 껍대기를 이루는 말이고 실제 객체를 완성하는 구성요소들은 이 프로퍼티와 메소드이기 때문이다.
→ ECMA5에서 프로퍼티는 객체의 일부로 이름과 값 사이 연결을 의미 라고 정의됨.
→ 객체의 속성을 나타내는 접근 가능한 이름과 활용가능한 값을 가지는 특별한 형태.
→ 객체를 활용함에 있어서 유용함.
→ 특정 객체가 가지고 있는 정보를 품고 있기에 객체가 가진 정보에 직접적으로 접근할 수 있게 해줌.
→ 이름과 값을 가지고 객체의 정보를 담고 있으며, 프로퍼티의 접근 연산자는 (.) 임. 이 연산자를 통해 프로퍼티를 추가 할 수도 있다.
프로퍼티에 아무런 값도 없으면
자바스크립트에서 사용하는 변수는 값을 할당하지 않고 선언만 할 경우 자바스크립트 엔진이 강제적으로 undefined 를 할당한다. 하지만 프로퍼티는 값이 할당되지 않으면 존재할 필요가 없는 녀석이다. 객체의 정보를 담고 있어야할 요소가 그 어떤 정보도 할당받지 않았다면 객체로서는 이 프로퍼티는 쓸모없는 녀석이기 때문이다.
그렇기 때문에 프로퍼티를 추가하면서 값을 할당하지 않으면 syntax error 이다. 프로퍼티를 추가 할 때 이점을 반드시 주의하여야 한다.
또 한 가지 추가적으로 반드시 기억해야 할 것은 자바스크립트의 프로퍼티는 undefined 나 null 을 할당한다고 삭제 되지 않는다. 프로퍼티의 삭제는 delete 라는 keyword 를 사용하여야 한다.