728x90
반응형
SMALL
// static
// 정적 프로퍼티 및 메소드를 생성
// 클래스 레벨 메소드(스테틱을 사용한 메소드)에서는 this를 참조할수 없다.
// 메모리에 먼저 올라가기 때문에 값을 받아올수가 없음
class Fruit {
static count_fruits = 10; // 객체를 생성하지 않아도 메모리에 올라가 있다.
constructor(name, emogi){
this.name = name;
this.emogi = emogi;
}
dispaly = () => {
console.log(`${this.name}: ${this.emogi}`);
}
static makeBanana(){
return new Fruit('banana', '🍌')
}
}
const apple = new Fruit('apple', '🍎')
const orange = new Fruit('orange', '🍊')
console.log(apple);
console.log(apple.name);
console.log(orange);
console.log(orange.name);
console.log(Fruit.count_fruits);
const banana = Fruit.makeBanana();
console.log(banana);
console.log('-----------------------------');
class Dog{
#name; // private 해당 속성이 적용된 클래스 외에서는 접근이 불가능함
#color;
constructor(name, color){
this.#name = name;
this.#color = color;
}
// 프로퍼티명과 꼭 일치할 필요는 없음
set name(value){
console.log('set', value);
this.#name = value;
}
get name(){
return `이름: ${this.#name}`;
}
run = () => {
console.log(`${this.#color} 색상의 이로치 ${this.#name}이(가) 달립니다.`);
}
#eat = () => {
console.log(`${this.name}는 먹습니다.`);
}
colorEat = () => {
this.#eat();
}
}
const Rucy = new Dog('루시', 'white');
// Rucy.name = '류씨'; // name이 새로 생성됨
console.log(Rucy);
//Private field '#name' must be declared in an enclosing class
// Rucy.#name = '류씨';
console.log(Rucy);
Rucy.name = '피카츄';
console.log(Rucy);
console.log(Rucy.name);
Rucy.run();
// Rucy.eat();
Rucy.colorEat();
console.log('------------------------------');
// 문제 카운터 만들기
// 카운터를 0으로 값을 초기화 한뒤 하나씩 숫자를 증가할 수 있는 메소드를 구현
class Counter {
#value
constructor(value){
if(isNaN(value) || value < 0) this.#value = 0;{
this.#value = 0;
}else{
this.#value = value;
}
}
get value(){
return this.#value;
}
increment = () => {
this.#value++;
}
}
const cnt = new Counter(0);
cnt.increment(); //1
cnt.increment(); //2
728x90
반응형
LIST
'JavaScript' 카테고리의 다른 글
JavaScript - Wrapper (0) | 2023.04.11 |
---|---|
JavaScript - 클래스 상속 예시 (0) | 2023.04.11 |
JavaScript - 객체 활용법 예시 (0) | 2023.04.11 |
JavaScript - 함수 작성법 예시 (0) | 2023.04.11 |
JavaScript - 정규 표현식 (0) | 2023.04.07 |