728x90
반응형
SMALL

1. 제너레이터

- 실행을 멈췄다가 나중에 다시 접근할 수 있는 특이한 형태의 함수

- 나중에 닷 접근하기 위해 context(변수)를 저장된 상태로 남겨둠

- 이터레이터를 좀 더 유연하게 사용할 수 있음

2. 예제 및 설명

2 - 1. 전체

 

2 - 2. (Generator Function) 

try -> 오류가 실행되었을때 오류 처리 방법

catch -> 캐치로 에러를 받아서 콘솔에 출력

 

2 - 2 - 1. 

multiple => 제너레이터 함수를 변수에 담기

next => 다음 요소를 반환

2-2-1 결과

 

728x90
반응형
LIST

'JavaScript' 카테고리의 다른 글

JavaScript - Map  (0) 2023.04.12
JavaScript - Spread  (0) 2023.04.12
JavaScript - iterable( 이터러블 )  (0) 2023.04.11
JavaScript - 이벤트(Event)  (0) 2023.04.11
JavaScript - Wrapper Object, URL,URI  (0) 2023.04.11
728x90
반응형
SMALL

이터러블

- 반복이 가능한 객체

- symbol.Iterator 메소드가 있어야 하며 Symbol.Iterator는 이터레이터 객체를 반환해야 함

- String, Array, Map, Set ..등등의 객체

- 반복문으로 반복이 가능하다.

 

이터레이터(Iterator)

- 반복처리가 가능한 객체

- 내부적으로 next() 메소드를 가지고 있음

- IterationResult 객체 value와 done이라는 프로퍼티를 가진 객체를 반환해야함

 

const arr에 어레이객체로 1~5를 담아주고

객체의 밸류, 엔트리, 키를 확인,

 

const iterator에 어레이의 밸류값을 담아주고

와일문으로 iterator의 값이 없어질때까지 밸류를 콘솔로 반환

포문도 위와 동일

위의 스크립트의 결과

728x90
반응형
LIST

'JavaScript' 카테고리의 다른 글

JavaScript - Spread  (0) 2023.04.12
JavaScript - Generator  (0) 2023.04.11
JavaScript - 이벤트(Event)  (0) 2023.04.11
JavaScript - Wrapper Object, URL,URI  (0) 2023.04.11
JavaScript - Wrapper  (0) 2023.04.11
728x90
반응형
SMALL

목차

  1.  이벤트(Event)
  2.  이벤트 타입(Event type)
  3.  이벤트 타겟(Event target)
  4.  이벤트 리스너(Event Listener)
  5.  이벤트 객체(Event Object)
  6.  이벤트 전파(Event Propagation)

 

 

 1. 이벤트(Event)

- 웹브라우저 알려주는 HTML 요소에 대한 사건을 발생
- 웹페이지에서 사용된 자바스크립트는 발생한 이벤트에 반응 -> 특정동작을 수행
- 자바스크립트는 비동기식 이벤트 중심의 프로그래밍 모델

(비동기식은 읽어오다가 느린것이 있으면 로딩이 끝나길 기다려주지 않고 그 뒤에것들을 먼저 불러오는방식)

 

input type이 버튼인 태그 = <button> 태그와 같다.
onclick은 이벤트타입이 onclick(클릭하면 반응한다) 라는 뜻이다.
sendit()은 괄호까지 들어가야 하는데 오타이고 여기에선 이벤트를 수행하는 함수이다.

 2. 이벤트 타입(Event type) 

- 발생한 이벤트의 종류를 나타내는 문자열로 이벤트 명이라고도 함
- 키보드, 마우스, HTML DOM, window 객체 등을 처리하는 이벤트 제공

이벤트 타입에 대한 자세한 설명: https://developer.mozilla.org/ko/docs/Web/API/Event

 

Event - Web API | MDN

Event 인터페이스는 DOM에서 발생하는 이벤트를 나타냅니다.

developer.mozilla.org

 

HTML의 바디부분

 

2-1 window.onload 부분의 설명

window.onload => html이 다 로딩된 후에 실행한다는 의미를 가지고 있다.

const text => 텍스트라는 변수명으로 상수를 만들어준다.

document.getElementById('text') => 요소의 아이디가 text인 객체에 접근한다

text.innerHTML = ' <b style='color..... 부분은 텍스트라는 변수에 아이디가 text인 요소를 접근하게 해놓고 innerHTML속성을 통해서 = '' 따옴표 안에 있는 HTML구문을 생성하게 한다.

 

2-2 function changeText(el) 설명

이름이 changeText인 함수에 el 을 요소로 받아서 innerHTML 해준다(2-1 과동일)

 

2-3 결과

(좌) 클릭전의 HTML 모습
(우) onclick(이벤트 타입) 으로 클릭을 하여 변환된 모습

 

3. 이벤트 타겟(Event target)

- 이벤트가 일어날 객체를 의미함

 

 4. 이벤트 리스너(Event Listener)

- 이벤트가 발생 했을 때 그 처리를 담당하는 함수

- 이벤트 핸들러라고도 부름

- 지정된 타입의 이벤트가 특정 요소에서 발생하면 웹 브라우저는 그 요소에 등록된 이벤트 리스너를 실행 하게 

 

 

4-1 예시와 설명

window.onload html문서가 다 불러와지면 함수를 실행시킨다.

const btn -> eventBtn의 아이디를가진 요소에 접근해서

그 요소에다가 이벤트 리스너들을 추가한다.

click -> 클릭했을때 반응한다  // clickBtn 함수명이 들어가는 자리

mouseover -> 마우스를 올려놓았을때

mouseout -> 마우스올린것을 다시 떼어냈을때

text라는 아이디를 가진 요소에 접근하여 = ' ' 안의 내용을 입력시켜준다.

기본 모습
버튼 위에 마우스를 올렸을 때
마우스를 내렸을 때

위와 설명은 동일

삭제 버튼을 클릭후 일어난 반응

 

 5. 이벤트 객체(Event Object)

- 특정 타입의 이벤트와 관련이 있는 객체

- 이벤트 객체는 해당 타입의 이벤트에 대한 상세정보를 저장하고 있음

- 모든 이벤트 객체는 이벤트 타입을 나타내는 type 프로퍼티와 이벤트 대상을 나타내는 target 프로퍼티를 가지고 있음

- 이벤트 객체를 이벤트 리스너가 호출할때 인수로 전달

sendit()함수는 e를 매개변수로 받고,

이벤트의 타겟은 버튼, 이벤트 타입은 클릭이 된다.

5-1 예시 및 설명

위의 바디의 모습

 

e.target => 이벤트 타겟: 버튼태그

e.target.id => 버튼의 아이디인 btn

e.target.value => 버튼태그의 밸류값 '확인'

e.type => 이벤트 타입이 뭔지 => click

버튼을 클릭하여 console로 반응한모습

 

5-2

버튼 1,2,3의 요소를 각각 btn123에 변수로 담아주고

addeventlistener를 통해서 클릭했을때 함수가 실행되게 해준다

switch문을 이용하여 이벤트 타겟의 아이디가 Btn1이면 버튼1이 눌렸다고,

Btn2 이면 버튼2가 눌렸다고 콘솔창에 출력하게 만들어주었다.

html의 모습

 

버튼 1번
버튼 2번

 

버튼 3번을 눌렀을때의 모습

 

 

 6. 이벤트 전파(Event Propagation)

- 이벤트가 발생 했을 때 브라우저가 이벤트 리스너를 실행시킬 대상 요소를 결정하는 과정

- document 객체나 html 무서의 요소에서 이벤트가 발생하면 대상 요소를 결정하기 위해 이벤트 전파가 일어남

6-1 버블링 전파방식

- 자식에서 부모로 이벤트를 전파

 

6-2 캡처링 전파방식

- 부모에서 자식으로 이벤트를 전파

 

6-3 이벤트 전파를 막는 방법

이벤트객체명.stopPropagation()

 

6-4 예시 및 설명

html의 모습

// 버블링 전파방식

divBox를 아이디로 가진 요소에 클릭하면 함수를  실행하게 적용

pBox를 아이디로 가진 요소에 클릭하면 함수를  실행하게 적용

spanBox를 아이디로 가진 요소에 클릭하면 함수를  실행하게 적용

// 캡처링 전파방식

버블링 전파방식에 3번째 요소로 true값을 넣어주면 됨

 

 

클릭하면 html을 inplace연산으로 계속 추가하게 해줌

 

p를 클릭하여도 div 까지 같이 실행이 된다. ( 버블링 전파방식 )

span에는 stopPropagation()을 사용하여 전파가 되지 않도록 막아 span의 이벤트만 실행 됨

728x90
반응형
LIST

'JavaScript' 카테고리의 다른 글

JavaScript - Generator  (0) 2023.04.11
JavaScript - iterable( 이터러블 )  (0) 2023.04.11
JavaScript - Wrapper Object, URL,URI  (0) 2023.04.11
JavaScript - Wrapper  (0) 2023.04.11
JavaScript - 클래스 상속 예시  (0) 2023.04.11
728x90
반응형
SMALL

Primitive Types

- string, number, bigint, boolean, undefined, symbol, null
- 기본타입은 객체가 아님
- 원시타입은 프로퍼티와 메소드를 정의할수 없다.
- new 키워드를 사용하여 원시 타입을 래퍼 객체로 생성할수 있지만, 주로 사용하는 방법은 아님


    let a = 'apple'; => string -> 기본함수들은 사용가능하지만 String객체의 기능을 이용할수는없다. 
    그래서 String과는 다르다.
    let a = new String('apple'); => String
   
    string -> String()
    number -> Number()
    bigint -> BigInt()
    boolean -> Boolean() 
    symbol -> Symbol() 

 

URL(Uniform Resource Location), URI(Uniform Resource Identifier)


- 아스키 문자로만 구성되야 함
- 한글이나 특수문자는 이스케이프 처리    

    const URL = 'https://대한민국.com'
    const encoded = encodeURI(URL) // 이스케이프 처리
    const decoded = decodeURI(encoded) // 돌려놓기
728x90
반응형
LIST

'JavaScript' 카테고리의 다른 글

JavaScript - iterable( 이터러블 )  (0) 2023.04.11
JavaScript - 이벤트(Event)  (0) 2023.04.11
JavaScript - Wrapper  (0) 2023.04.11
JavaScript - 클래스 상속 예시  (0) 2023.04.11
JavaScript - 클래스 활용예시  (0) 2023.04.11
728x90
반응형
SMALL
 const num = 10; // number 원시타입
        console.log(typeof(num));
        console.log(num.toString());
        console.log(typeof(num.toString()));
        console.log(typeof(num));

        // 지수 표기법(10의 n승으로 표기)
        const x1 = 102;
        console.log(x1.toExponential());
       
        // 반올림하여 문자열로 변환
        const x2 = 1234.12;
        console.log(x2.toFixed());
        console.log(typeof(x2.toFixed));
       
        // 로컬 형식의 문자형으로 변환
        console.log(x2.toLocaleString('ar-EG')); // 아랍어로 바꾼것

        const x3 = 0.1 + 0.2 - 0.2;
        console.log(x3);

        console.log(globalThis); // 환경이 어디서 돌아가고있는지

        const URL = 'https://대한민국.com'
        const encoded = encodeURI(URL);
        console.log(encoded);
        const decoded = decodeURI(encoded);
        console.log(decoded);

        // 모든 문자를 인코딩
        const encodeCom = 'https://대한민국.com';
        console.log(encodeURIComponent(encodeCom));

 

728x90
반응형
LIST

'JavaScript' 카테고리의 다른 글

JavaScript - 이벤트(Event)  (0) 2023.04.11
JavaScript - Wrapper Object, URL,URI  (0) 2023.04.11
JavaScript - 클래스 상속 예시  (0) 2023.04.11
JavaScript - 클래스 활용예시  (0) 2023.04.11
JavaScript - 객체 활용법 예시  (0) 2023.04.11
728x90
반응형
SMALL
class Animal{
            constructor (color) {
                this.color = color;
            }
            eat(){
                console.log('먹는다!');
            }
            sleep(){
                console.log('잔다!');
            }
        }
        class Dog extends Animal{
            play(){
                console.log('논다!');
            }
        }
        const Rucy = new Dog('white');
        console.log(Rucy);
        Rucy.eat();
        Rucy.sleep();
        Rucy.play();

        class Cat extends Animal{
            constructor (color, name){
                super(color);
                this.name = name;
            }
            eat(){
                console.log('맛있게 먹는다!');
            }
        }
        const Horang = new Cat('black', '호랑');
        console.log(Horang);
        Horang.eat();
        console.log('---------------------------------------------------');
        // 문제
        // 정직원, 아르바이트를 나타낼수 있는 클래스를 생성
        // FullTimeEmployee, PartTimeEmployee
        // 직원의 정보: 이름, 부서명, 한달 근무시간 (프로퍼티)
        // 급여: 정직원(20000), 알바(10000)
        // 매달 직원들의 정보를 이용해서 한달 급여를 계산하는 메소드를 구현(calculatePay())
        // ex) kim.calculatePay() -> 한달 급여

        // class Employee {
        //     // #name
        //     // #bu
        //     // #time
        //     // #pay
        //     constructor(name, bu, pay, time){
        //         this.name = name;
        //         this.bu = bu;
        //         this.time = time;
        //         this.pay = pay;
        //     }
        //     calculatePay(pay, time){
        //         if (this.time <= 0){
        //             return `급여가 없습니다`
        //         }else{
        //             console.log(this.pay * this.time);
        //         }
        //     }
        // }

        // class FullTimeEmployee extends Employee{
           
        // }
        // class PartTimeEmployee extends Employee{
           
        // }
        // const noname = new FullTimeEmployee('김직원', '인사팀', 20000, 120)
        // const kim = new PartTimeEmployee('김알바', '인사팀', 10000, 80)
        // noname.calculatePay();
        // kim.calculatePay();
        // console.log(noname);
        // console.log(kim);
        console.log('-----------------------');
        console.log('선생님 답안');
        class Employee {
            constructor(name, department, hourPerMonth, payRate) {
                this.name = name;
                this.department = department;
                this.hourPerMonth = hourPerMonth;
                this.payRate = payRate;
            }
            calculatepay(){
                return this.hourPerMonth * this.payRate;
            }
        }

        class FullTimeEmployee extends Employee{
            static PAY_RATE = 20000;
            constructor(name, department, hourPerMonth){
                super(name, department, hourPerMonth, FullTimeEmployee.PAY_RATE)
            }
        }

        class PartTimeEmployee extends Employee{
            static PAY_RATE = 10000;
            constructor(name, department, hourPerMonth){
                super(name, department, hourPerMonth, PartTimeEmployee.PAY_RATE)
            }
        }

        const kim = new FullTimeEmployee('김사과', '개발자', 160);
        const Orange = new PartTimeEmployee('오랜지', '디자이너', 100);
        console.log(kim.calculatepay());
        console.log(Orange.calculatepay());
728x90
반응형
LIST

'JavaScript' 카테고리의 다른 글

JavaScript - Wrapper Object, URL,URI  (0) 2023.04.11
JavaScript - Wrapper  (0) 2023.04.11
JavaScript - 클래스 활용예시  (0) 2023.04.11
JavaScript - 객체 활용법 예시  (0) 2023.04.11
JavaScript - 함수 작성법 예시  (0) 2023.04.11

+ Recent posts