참조형 데이터타입의 종류
객체의 종류는 크게 배열(array), 함수(function), 배열이나 함수가 아닌 객체로 나눌 수 있습니다.
객체는 하나의 변수에 다양한 정보를 저장할 때 유용하게 사용할 수 있다.
property 이름은 중복될 수 없습니다.
property 값에는 어느 type이나 가능합니다.(string,number,array,object,function...)
property의 값이 함수일 경우, 이를 일반 함수와 구분하기 위하여 method(메서드)라고 부릅니다.
let profile = {
name: "서지원",
age: 28,
team: function(){}
}
let name = profile.name
console.log(name) // 서지원
let age = profile['age']
console.log(age) // 28
const ray = new Car('Ray', 2000);
const genesis = new Car('Genesis', 8000);
class Car {
constructor(name,price) {
this.name = name;
this.price = price;
this.department = '송파구'
}
applyDiscount(discount) {
return this.price * discount
}
}
- 클래스 내에 정의된 함수를 메서드 라고 부릅니다.
- 클래스를 통해 생성된 객체를 인스턴스라고 부릅니다.
- constructor는 Class에서 필요한 기초 정보를 세팅하는 곳입니다.(객체를 new로 생성할 때 가장먼저 자동으로 호출됩니다.)
- this는 본인객체를 의미한다. 클래스 내에서 메서드끼리 소통하기 위해서는 this가 필요합니다.
lass Fruit {
static Max_length = 4;
constructor(name, emogi) {
// 멤버함수
this.name = name;
this.emoji = emogi;
}
//클래스 레벨의 메서드
static makerRandomFruit() {
// 클래스 레벨의 메서드에서는 this를 참조 할 수 없음.
return new Fruit("banana", "🍌");
}
// 인스턴스 레벨의 메서드
display = () => {
console.log(`${this.name}: ${this.emogi}`);
};
}
const apple = new Fruit("apple", "🍎");
console.log(apple);
// 앞에 new를 안붙이고 호출한다.
const banana = Fruit.makerRandomFruit();
console.log(banana);
console.log(Fruit.Max_length);
// 접근자 프로퍼티
class Student {
constructor(firstName, lastName) {
this.firstName = firstName;
this.lastName = lastName;
}
get fullName() {
return `${this.lastName} ${this.firstName}`;
}
set fullName(value) {
console.log(value);
}
}
const student = new Student("지원", "서");
console.log(student);
console.log(student.firstName);
console.log(student.fullName); //get 사용해서 fullName()으로 호출x
student.fullName = "김철수";
class Animal {
constructor(color) {
this.color = color;
}
eat() {
console.log("먹자");
}
sleep() {
console.log("자잔다자");
}
}
class Tiger extends Animal {}
const tiger = new Tiger("노랑이");
// console.log(tiger)
// Tiger {color: '노랑이'}
class Dog extends Animal {
constructor(color, ownerName) {
//Animal color를 상속받음
super(color);
this.ownerName = ownerName;
}
play() {
console.log("놀자아~!");
}
//오버라이딩
eat() {
super.eat(); //부모에있는 먹자가 출력
console.log("강아지가 먹는다."); //상속받은거 덮어씌운다
}
}
const dog = new Dog("빨강이", "지원");
console.log(dog.ownerName); // 지원
console.log(dog); // Dog {color: '빨강이', ownerName: '지원'}
dog.play(); // 놀자아~!
dog.sleep(); // Animal상속받은 메소드
dog.eat();