728x90
반응형
✔ Class
✔ 객체를 만드는 켐플릿
1. 생성자 함수
2. 클래스
static : 정적 프로퍼티 및 메서드
class Fruit {
// eng = 'noname';
static count_fruits = 0;
constructor(name, emoji){
this.name = name;
this.emoji = emoji;
}
display = () => {
console.log(`${this.name} : ${this.emoji}`);
};
static makeBanana() {
// return 'banana';// class이름으로 바로 접근가능
return new Fruit('banana', '🍌');
// 클래스 레벨 메서드에서는 this를 참조할 수 없음
}
}
// apple은 Fruit 클래스의 인스턴스
const apple = new Fruit('apple','🍎');
// orange는 Fruit 클래스의 인스턴스
const orange = new Fruit('orange','🍊');
console.log(apple);
console.log(orange);
console.log(apple.name);
console.log(orange.emoji);
apple.display();
const banana = Fruit.makeBanana();
console.log(banana);
console.log(Fruit.count_fruits);
class Dog{
#name; //외부에서 내 내용을 변경불가능하게 # = private
#color;
constructor(name, color){
this.#name = name;
this.#color = color;
}
get info(){
return `이름 :${this.#name}, 색상 : ${this.#color}`;
}
set info(value){// 가격을 받아 처리
console.log(`set`,value);
this.#name = value;
}
run = () => {
console.log(`${this.#color} 색상의 상아지 ${this.#name}는 달립니다.`)
}
#eat = () =>{
console.log(` ${this.#name}는 먹습니다.`)
}
}
const Rucy = new Dog('루시', 'white');
console.log(Rucy);
Rucy.name = '개똥이'; //public으로 새롭게 만들어짐
// Rucy.#name = 'asd'// private은 밖에서 사용 불가능하다
//#field는 외부에서 접근이 불가능하다.
console.log(Rucy);
Rucy.run();
// Rucy.eat();
console.log(Rucy.name);
// console.log(Rucy.info());
console.log(Rucy.info); //get사용시, 출력만하면 get
Rucy.info = '뽀미'; //set을 부름, 입력하면 set
console.log(Rucy.info); //get
✔ Extends
class Employee{
constructor(name, emp, time, pay){
this.name = name;
this.emp = emp;
this.time = time;
this.pay = pay;
}
calculatePay(){
return this.time *this.pay;
}
}
class FullTimeEmployee extends Employee{
static PAY_RATE = 20000;
constructor(name, emp, time){
super(name, emp, time, FullTimeEmployee.PAY_RATE);
}
}
class PartTimeEmployee extends Employee{
static PAY_RATE = 10000;
constructor(name, emp, time){
super(name, emp, time, PartTimeEmployee.PAY_RATE);
}
}
const Kim = new FullTimeEmployee('김사과', '개발자', 160);
const Ban = new PartTimeEmployee('반하나', '디자이너', 100);
console.log(Kim.calculatePay());
console.log(Ban.calculatePay());
✔ Wrapper
const num = 10; // number 원시 타입
console.log(typeof(num));
console.log(num);//num뒤에 .을 찍는 순간 이는 객체가 되면서 메소드를 사용한다.
// 객체가 아닌데 왜 메소드를 호출 할 수 있지?
console.log(num.toString()); // num object -> 기능 사용 .을 사용한 순간만
console.log(num); // number 원시 타입
// 지수 표기법
const num2 = 102;
console.log(num2.toExponential());
// 반올림하여 문자열로 변환
const num3 = 1234.12;
console.log(num3.toFixed());
// 로컬형식(각 나라)의 문자형으로 변환
console.log(num3.toLocaleString('ar-EG'));
const num4 = 0.1 + 0.2 - 0.2;
console.log(num4);
// 브라우저 밖(node.js)
console.log(globalThis); // 기본 속성으로 무엇을 사용할 수 있는지
// 브라우저 안(browser)
const URL = 'https://코리아아이티아카데미.com';
const encoded = encodeURI(URL);
console.log(encoded);
const decoded = decodeURI(encoded);
console.log(decoded);
const part = '코리아아이티아카데미.com';
console.log(encodeURIComponent(part));
반응형
'JavaScript' 카테고리의 다른 글
JavaScript(이벤트전파, iterable, generator, spread) (0) | 2022.11.10 |
---|---|
JavaScript(이벤트 타입/리스너/객체) (0) | 2022.11.10 |
JavaScript - function, object 예제 (0) | 2022.11.09 |
JavaScript(정규식, 회원가입 페이지) (1) | 2022.11.09 |
JavaScript(history, navigator, node, 문서객체모델/노드) (0) | 2022.11.09 |