안녕하세요.
디자인도 하고, 개발도 하는 '디발자 뚝딱'입니다.
이번 포스팅에서는 자바스크립트로 객체 만드는 법에 대해 공유 하려 합니다.
지금부터는 가독성을 위해 문어체를 사용하여 작성하겠습니다!
Object-Literal
- 중괄호를 쓰고 프로퍼티와 메소드를 나열하는 것.
- 객체를 나타내는 문자열.
* 노란색 끼리는 같은 내용
const tooktak = {
name: '뚝딱',
birthdate: '1992-09-23',
buy(item) {
console.log(`${this.name} buys ${item.name}`);
},
}
const item = {
name: '맥북',
price: 10000,
};
console.log(tooktak.name);
console.log(tooktak.birthdate);
tooktak.buy(item);
// 결과
// 뚝딱
// 1992-09-23
// 뚝딱 buy 맥북
객체 생성1. Factory function
- 객체를 생성하는 방식.
- object literal로 객체를 생성하여리턴하는 방법.
- 공장에서 물건을 찍어내듯이 객체를 만들어낸다.
function createUser(name, birthdate) {
const user = {
name: name,
birthdate: birthdatem
buy(item) {
consoel.log(`${this.name} buys ${item.name}`);
},
};
return user;
};
const item = {
name: '맥북',
price: 10000
};
conset user1 = createUser('뚝딱', '1992-09-23');
conset user1 = createUser('두올다', '1992-09-22');
conset user1 = createUser('도깨비', '1992-09-21');
console.log(user1.name);
console.log(user2.name);
console.log(user3.name);
user1.buy(item);
user2.buy(item);
user3.buy(item);
// 결과
// 뚝딱
// 두올다
// 도깨비
// 뚝딱 buys 맥북
// 두올다 buys 맥북
// 도깨비 buys 맥북
- 위 코드에서 name과 birthdate를 적는 방식을 아래 코드처럼 바꿀 수 있다.
function createUser(name, birthdate) {
const user = {
name,
birthdate,
buy(item) {
consoel.log(`${this.name} buys ${item.name}`);
},
};
return user;
};
const item = {
name: '맥북',
price: 10000
};
conset user1 = createUser('뚝딱', '1992-09-23');
conset user1 = createUser('두올다', '1992-09-22');
conset user1 = createUser('도깨비', '1992-09-21');
console.log(user1.name);
console.log(user2.name);
console.log(user3.name);
user1.buy(item);
user2.buy(item);
user3.buy(item);
// 결과
// 뚝딱
// 두올다
// 도깨비
// 뚝딱 buys 맥북
// 두올다 buys 맥북
// 도깨비 buys 맥북
객체 생성2. Constructor Function (생성자 함수)
- 객체를 생성하려면 new 키워드를 붙여서 호출해야 한다.
- 다른 일반 함수와 달리, 함수의 이름의 첫번째 알파벳을 대문자로 적는다. (관습)
- 객체를 생성하는 용도로 사용하는 constructor function을 정의하고, 그 안에서 this 키워드를 사용하여 생성될 객체의 프로퍼티와 메소드를 설정하는 방법.
// 객체를 생성할 수 있는 함수 Constructor function
function User(name, birthdate) {
this.name = name;
this.birthdate = birthdate;
this.buy = funxtion (item) {
consol.log(`${this.name} buys ${item.name}`);
// 여기서 this는 user1, user2, user3 = 각각의 객체
};
}
const item = {
nmae: '맥북',
price: 10000
}
const user1 = new User('뚝딱', '1992-09-23');
const user2 = new User('두올다', '1992-09-22');
const user3 = new User('도깨비, '1992-09-21');
console.log(user1.name);
console.log(user1.name);
console.log(user3.name);
console.log(user1.birthdate);
user1.buy(item);
// 결과
// 뚝딱
// 두올다
// 도깨비
// 1992-09-23
// 뚝딱 buys 맥북
객체 생성3. Class
- ES6에서 추가되었다.
- constructor function과 마찬가지로 new 키워드를 사용하여 객체를 생성한다.
- constructor 안에 프로퍼티를 쓰고, 메소드는 그 밖에 쓴다. (프로퍼티와 메소드를 분리)
class User {
constructor(name, birthdate) {
this.name = name;
this.birthdate = birthdate;
// 여기서 this는 생성되는 객체
}
// 해당 객체의 메소드
buy(item) {
console.log(`${this.name} buys ${item.name}`);
}
}
const item = {
nmae: '맥북',
price: 10000
}
const user1 = new User('뚝딱', '1992-09-23');
const user2 = new User('두올다', '1992-09-22');
const user3 = new User('도깨비', '1992-09-21');
console.log(user1.name);
console.log(user1.name);
console.log(user3.name);
console.log(user1.birthdate);
user1.buy(item);
// 결과
// 뚝딱
// 두올다
// 도깨비
// 1992-09-23
// 뚝딱 buys 맥북
728x90
'코딩도 합니다 > JS' 카테고리의 다른 글
[자바스크립트 js] static 프로퍼티 / static 메소드 (0) | 2021.06.27 |
---|---|
[자바스크립트 js] 객체 지향 프로그래밍 4가지 개념 / 추상화 / 캡슐화 / 상속 / 다형성 / super / instanceof (1) | 2021.06.19 |
[자바스크립트 js] 객체 지향 프로그래밍이란 (0) | 2021.06.19 |
[자바스크립트 js] 모듈 복습 및 활용 / 직전 게시물 정리 (0) | 2021.06.19 |
[자바스크립트 js] 모듈 문법 / as 키워드 / * 와일드 카드 문자 / imprt 키워드 / export 키워드 / default export / named export (0) | 2021.06.19 |