객체를 생성 할 때 중괄호를 사용하여 만드는 방식을 객체리터럴 방식이라고 합니다.
Object() 생성자 함수 사용 : 자바스크립트는 객체를 생성할 때, 내장 Object() 생성자 함수를 제공한다.
let a = new object(); // object 생성자 함수
let a = {}; // 객체리터럴
let a = {
key:"value", // 키: 값 , 프로퍼티
key2:"value2"
}
console.log(a.key); // value
객체 리터럴 방식 중괄호 안에는 키와 값 ( 키 : 값) 형태로 만들어야 합니다
추가로 생성하고 싶을 때는 콜론을 이용하여 추가 생성 가능 합니다
키 : 값 의 형태로 저장된 데이터, 즉 객체가 가지고 있는 값을 프로퍼티(property) 라고 합니다
점 표기법을 사용하여 프로퍼티 값을 가져올 수 있습니다.
let a = {
name : "석준수",
age: 25
};
console.log(property("name"));
function property (key) {
return a[key];
};
호이스팅에 의해 property 함수는 코드 상단에 위치하게 되어 실행이 가능하고
property 함수에 name이라는 문자열을 key매개변수에 전달을 하게 되어 a 객체에 name 프로퍼티 에 접근을 할 수 있고 값도 가져올 수 있게 됩니다
위 코드는 사실상 console.log(a["name])과 같은 코드를 의미합니다.
let a = {
name: "석준수",
age:25
};
// 점 , 괄호 표기법 모두 가능
a.location = "서울";
a["map"] = "서울 강북구 수유로";
a.name = "한국성서대학교";
console.log(a["location"],a.map,a.name); // 서울 서울 강북구 수유로 한국성서대학교
위의 코드처럼 외부에서 대입연산자와 점 표기법을 이용해 프로퍼티 값을 추가하여 사용가능
객체 외부에서도 객체 내부에 값을 수정가능
let a = {
name:"석준수",
age: 25
};
delete a.name;
a.age =null;
console.log(a); //age:25
delete 키워드를 사용하여 프로퍼티 값을 삭제 가능
하지만 delete 키워드 사용하여 지우면 프로퍼티 값만 지울뿐 실제 메모리 값은 그대로 존재함
그래서 대입연산자를 이용해 null값을 대입하여 삭제함
let a = {
name:"석준수",
age: 25,
bible: function () {
console.log("hi");
}
};
a.bible();
이렇게 객체안에 프로퍼티로 함수를 담는 것을 메서드 라고 합니다
let a = {
name: "석준수",
age: 25,
bible: function () {
console.log(`안녕 나는 ${this.name}`); // a.name 의미
}
};
a.bible(); // 안녕 나는 석준수
메서드를 사용하게 되면 this 라는 키워드를 통해 객체 안에 멤버를 편하게 사용가능
여기서 this는 자기 자신의 객체를 의미 this = a