let person = new Object();  // 뒤에 new라고 붙이면 객체를 생성한다고 생각하면 된다
let person = {}  // 이 방식도 있는데 이는 객체 리터럴 방식이라고 함 (주로 이렇게 씀)

let person = {
	key: "value",  // 프로퍼티 (객체 프로퍼티)
	key1: "value2"
}

console.log(person.key1); // 이렇게 점 표기법으로 객체에 key 값을 가져올 수 있음

console.log(person["key"]) // 이게도 가져올 수 있음 (괄호 표기법 반드시 key를 문자열로 표기)

괄호 표기법을 이용하는 좋은 상황은 동적인 파라미터를 얻을 때 주로 쓰임

let person = {
	name: "박정수",
	age : 26
};

console.log(getPropertyValue("name"));

function getPropertyValue(key){
	return person[key];
}

**// property 추가**
person.location = "한국";  이런식으로 property를 추가해도 됨

person.person["gender"] = "남성";

**// property 삭제** 
delete person["name"]; // 하지만 이는 properry 간에 연결을 끊을 실제로 메모리에서 지워지진X

// 그래서 이런식으로 지우면 메모리에서 날릴 수 있어서 이 방식 추
person.name = null; 

console.log(person);

**// 메서드**
const person = {
	name: "박정수", // 멤버
	age : 25, // 멤버
	say : function(){
		console.log("안녕");
	} // 객체에 담긴 함수를 메서드라 함
}

// 두 방식으로 호출 가능 
person["say"](); 
person.say();

const person = {
	name: "박정수", // 멤버
	age : 25, // 멤버
	say : function(){
		console.log(`안녕나는 ${this.name}`);  // or ${this["name"]} 으로 자신 객체의 멤버사용} 
}

person["say"](); 

console.log(`name : ${"name" in person}`); // 결과 name: tr