● 객체
- 객체의 고유한 속성을 프로퍼티(property)라고 부르며, 여러 프로퍼티와 값의 쌍으로 표현된다.
- 객체가 호출하는 함수는 메소드라고 부른다.
● 객체 사용 방법
account.프로퍼티명
account['프로퍼티명']
(ex)
account = {name: '한동석', number: '110-11-11111', code: '1234'};
console.log(account.name);
(ex)
account = {deposit: function(){...}};
account.deposit();
● 프로토타입
- new 뒤에 나오는 생성자를 자바스크립트에서는 프로토타입이라고 부른다.
- 프로토타입은 함수로 선언하여 사용한다.
● JSON
- JSON.parse(): JSON을 JS Object로 변경할 때 사용
- JSON.stringify(): JS Object를 JSON으로 변경할 때 사용
실습(객체(1))
1. 처음에 들어갈 값을 알 때 사용
let account = {
owner: "홍길동",
code: "1234",
balance: 15000,
deposit: function(money){this.balance += money;}, // 입금
withdraw: function(money){this.balance -= money;}, // 출금
showBalance: function(){return this.balance} // 현재잔액
};
with(console){
log(account);
log(account.owner);
log(account['owner']);
log(account['balance']);
account.deposit(50000);
log(account.showBalance());
account.withdraw(20000);
log(account.balance);
}
![](https://blog.kakaocdn.net/dn/cHMplU/btrA547Di0y/b6YQIniIXC64mP8FmlMC01/img.png)
2. 당장 넣을 값에 대해 알 수 없을 때 사용
let account = new Object();
account.owner = "홍길동";
account.code = "1234";
account.balance = 15000;
account.deposit = deposit;
account.withdraw = withdraw;
function deposit(money){
this.balance += money;
}
function withdraw(money){
this.balance -= money;
return money;
}
account.deposit(50000);
console.log(account['balance']);
console.log(account.withdraw(30000) + "원 출금 후 잔액 : " + account.balance + "원");
![](https://blog.kakaocdn.net/dn/bDrqQx/btrA5aHgNkl/fE1uKz4bm7D6a7by8w7gU1/img.png)
실습(객체(2))
1. 문제
// 기차에 등급별 좌석 구현
// 3명의 고객이 있으며, 각 고객별 정보는 다음과 같다.
// [1]
// 이름: 홍길동
// 나이: 20
// 등급: 1
// [2]
// 이름: 이순신
// 나이: 40
// 등급: 2
// [3]
// 이름: 장보고
// 나이: 19
// 등급: 3
// 3명은 기차 한 대에 모두 탑승한다.
// 기차 객체를 만들고 각 손님들을 프로퍼티로 선언한다.
2. 코드
// [1]
hong = {name: '홍길동', age: 20, level: 1};
// [2]
lee = {name: '이순신', age: 40, level: 2};
// [3]
jang = {name: '장보고', age: 19, level: 3};
// 기차 객체를 만들고 각 손님들을 프로퍼티로 선언한다.
train = new Object();
// Key가 passenger1이고 Value가 hong인 프로퍼티 생성
train.passenger1 = hong;
train.passenger2 = lee;
train.passenger3 = jang;
console.log(train);
![](https://blog.kakaocdn.net/dn/TAz5w/btrA8UwdfZQ/ZbdurqVOAna7B5KidHfHH0/img.png)
실습(객체(3))
function User(id, pw, name, age){
this.id = id;
this.pw = pw;
this.name = name;
this.age = age || 1;
this.intro = function(){
with(console){
log(this.id);
log(this.pw);
log(this.name);
log(this.age);
}
}
}
kim = new User("kim1234", "1234", "김철수", 20);
hong = new User("hong1234", "3434", "홍길동");
console.log(kim);
kim.intro();
kim.intro = intro;
kim.intro();
function intro() {
console.log("자기소개");
}
실습(JSON(1))
user = {name: '홍길동', age: 20};
// js object는 json으로 판단되지 않기 때문에 오류 발생
// JSON.parse(user);
userJSON = JSON.stringify(user);
console.log(typeof userJSON); // JSON : string
console.log(typeof user); // JS Object : object
// JSON을 JSObject로 바꾸었기 때문에 프로퍼티 접근 가능
console.log(JSON.parse(userJSON).name);
// JSON은 프로퍼티 접근 불가능
console.log(userJSON.name);
![](https://blog.kakaocdn.net/dn/MvCXt/btrA4QPSeah/sYs7kaxxvHG8kyg063SM20/img.png)
실습(JSON(2))
1. 문제
// 상품명과 가격을 JSON으로 만든다.
// JSON을 Object 객체로 변환한다.
// 각각의 프로퍼티를 출력한다.
// JSON으로 변환한 뒤 출력한다.
2. 코드
let productJSON = '{"name": "마우스", "price": 18000}';
let product = JSON.parse(productJSON);
console.log(product.name);
console.log(product.price + "원");
productJSON = JSON.stringify(product);
console.log(productJSON);
![](https://blog.kakaocdn.net/dn/bsGThY/btrA54s1EYe/IFPl20SB57PCBUpDRqBj20/img.png)
실습(JSON(3))
1. 문제
// 비행기에 승객이 2명이 있다.
// 1번, 2번 승객
// 이름, 나이, 성별
// js object에 담고 JSON으로 변환하기
// JSON으로 변환한 다음 타입 확인
// JSON을 js object로 변환한 뒤 이름과 나이, 성별 출력
// 이 때 이름, 나이, 성별 출력은 메소드로 선언한다.
2. 코드
function Passenger(name, age, gender){
this.name = name;
this.age = age;
this.gender = gender;
this.intro = function(){ // 이름, 나이, 성별 출력을 메소드로 선언
with(console){
log(this.name);
log(this.age);
log(this.gender);
}
}
}
let passenger1 = new Passenger("김철수", 20, "남자");
let passenger2 = new Passenger("김영희", 21, "여자");
let plane = new Object();
plane.passenger1 = passenger1;
plane.passenger2 = passenger2;
console.log(plane);
plane.passenger1.intro();
plane.passenger2.intro();
// js object 프로퍼티 중에서 메소드는 JSON으로 변환 시 없어진다.
// 이는, JSON의 목적이 데이터 전달이므로, 데이터가 아니라고 판단되면 없앤 뒤 변환된다.
let planeJSON = JSON.stringify(plane);
console.log(planeJSON);
console.log(typeof planeJSON);
plane = JSON.parse(planeJSON);
// 메소드는 JSON으로 변환했을 때 없어졌으므로 출력되지 않는다.
console.log(plane);
'웹 개발 > JavaScript' 카테고리의 다른 글
[Web_JavaScript] 09 (0) | 2022.05.05 |
---|---|
[Web_JavaScript] 08 (0) | 2022.05.04 |
[Web_JavaScript] 06 (0) | 2022.05.02 |
[Web_JavaScript] 05 (0) | 2022.05.01 |
[Web_JavaScript] 04 (0) | 2022.04.30 |