JavaScript는 객체 기반 스크립트 언어이며 JavaScript를 이루고 있는 거의 모든 것은 객체이다. 다양한 데이터를 값으로 가질 수 있다.
// 하나의 값만 갖는 것 대신
const name = 'yeonju'
const age = 24.5
// 여러개의 값을 한번에 담을 수 있다.
const whoami = {
name : 'yeonju'
age : 24.5
}
배열도 객체이다. 그래서 배열을 따로 판별해주는 메서드(Array.isArray
)가 있다. 원시 타입(Primitives)을 제외한 나머지 값들(함수, 배열, 정규표현식 등)은 모두 객체라고 할 수 있다.
let arr = ['im array'];
console.log(typeof(arr)); // object
console.log(Array.isArray(arr)); // true
가장 일반적인 자바스크립트의 객체 생성 방식이다. 클래스 기반 객체 지향 언어와 비교할 때 매우 간편하게 객체를 생성할 수 있다. 중괄호({})를 사용하여 객체를 생성하는데 {} 내에 1개 이상의 프로퍼티를 기술하면 해당 프로퍼티가 추가된 객체를 생성할 수 있다. {} 내에 아무것도 기술하지 않으면 빈 객체가 생성된다.
// 객체의 생성과 프로퍼티 추가
let obj = {
name : 'yeonju'
};
new 연산자와 Object 생성자 함수를 호출하여 빈 객체를 생성할 수 있다. 빈 객체 생성 이후 프로퍼티 또는 메소드를 추가하여 객체를 완성하는 방법이다.
생성자(constructor) 함수란 new 키워드와 함께 객체를 생성하고 초기화하는 함수를 말한다. 생성자 함수를 통해 생성된 객체를 인스턴스(instance)라 한다.
//객체 생성
let obj = new Object();
//프로퍼티 추가
obj.firstName = "yeonju";
obj.lastName = "son";
let object = {
key : value
}
자바스크립트의 객체는 키(key)과 값(value)으로 구성된 프로퍼티(Property)들의 집합이다.
JavaScript에서 사용하는 변수는 값을 할당하지 않고 선언만 할 경우 자동적으로 undefined를 할당한다. 하지만 객체의 정보를 담고 있어야 할 요소가 그 어떤 정보도 할당받지 않았다면 객체로서는 필요가 없기 때문에 프로퍼티를 추가하면서 값을 할당하지 않으면 syntax error가 뜬다.
let person = {
name: "yeonju Son"
};
person.age = 24.5;
person["height"] = '161cm'
console.log(person) // {name: "yeonju Son", age: 24.5, height: "161cm"}
JavaScript의 프로퍼티는 undefined나 null을 할당한다고 삭제되지 않기 때문에 반드시 delete라는 keyword를 사용하여 프로퍼티를 삭제해주어야 한다.
let obj = new Object();
obj.name='obj';
console.log(obj); // {name:"obj"}
obj.name=null;
console.log(obj); // {name:null}
delete obj.name;
console.log(obj); // {}
let person = {
name: "yeonju",
age: 24.5,
height: "161cm"}
변수이름.프로퍼티키
console.log(person.name) // "yeonju"
console.log(person.age) // 24.5
변수이름["프로퍼티키"]
console.log(person["name"]) // "yeonju"
console.log(person["age"]) // 24.5
let person = {
name: "yeonju",
age: 24.5,
height: "161cm"
};
person = {name: "yeonju", age: 24.5, height: "165cm"}
console.log(person) // {name: "yeonju", age: 24.5, height: "165cm"}
// 한 명쯤은 내 이름과 나이, 키를 외웠을 것 같다•••
const func = (itemId, quantity) => {
let obj = {itemId: itemId , quantity : quantity}
return obj;
}
func(3, 5)
console.log(func) // {itemId: 3, quantity: 5}
key
프로퍼티 : 변수
value
프로퍼티 : 전달인자가 들어가는 변수의 값
나이 24.5.. 조금 열받네요