< function 과 method > 둘다함수
function
method = 오브젝트 안에 { } 들어 있다. 실행은 object.메소드네임(); 으로 실행시킨다.
<this 란 ? >
ㅡ 객체 자기자신을 가리킴
ㅡ method 의 경우 실행하고 있는 객체를 참조한다.
ㅡ 일반 함수의 경우 전역격체 (window , 상위) ckawh
ㅇ js 에서 this 는 ?
ㅡ 어떤식으로 함수가 호출 되었는지에 따라 다르게 매핑된다.
ㅡ 기본적으로는 전역객체 (window객체가 나옴) /오브젝트 안에서는 해당 오브젝트가 나온다.
blind() 라는 함수로 this가 가리키는 객체 수동 매핑 가능하다. (=Explicit binding)
ㅇ Js 의 strict mode (엄격한)
ㅡ 예측 불가 동작들을 명로하게 만들고자
ㅡ 'use strict'; 파일 최상단 또는 함수 첫 줄에 적어줘서 활성화시킴
<클로져 Closure>
: A함수 안에 B 함수가 선언 되었을때 B 함수가 참조하는 A힘수 안쪽 영역
ㅡ fuction factory :함수를 만들어내는 함수
ㅡ module design pattern : IIFF(즉시실행함수) 를 활용한 priavate 변수와 mothod를 가지는 module생성가능하다.
< 비동기 async>
동기(Sync) : 어떤식으로든 b 함수 작업이 끝난 것을 확인 후, 마무리를 A함수에서 하는 것
비동기(Async) : A는 b함수호출까지만을 담당 했을 뿐 처리+마무리는 B함수가 한다. (쿨거래)
>> 특정 작업을 위한 제어흐름의 최종 마무리를 어디서 하는지에 대한 속성이다.
< 블로킹과 논-블로킹 >
블로킹 : a - b -a ( a는 쉬고 b작업 끝나고 a작업 진행)
논블로킹 : a - a,b -a ( 콜백으로 b 는 거의 바로 반환해서 작업한다 ) (즉시반환)
>> 제어권이 넘어갔을 때 곧바로 반환 여부에 대한 속성이다.
>>> 자바스크립트는 Non-blocking+Async 방식이다.
< 콜백함수 Callback function >
: 어떤 함수를 호출할 때, 인자값으로 넘기는 나중에 실행될 함수 ! (async 쿨거래)
ㅡ 콜백함수 용도
ㅡ js의 비동기작업을 처리하기위한 방법이다. ㅡ 주로 어떤 작업이 끝난 이후, 그 결과값을 가지고 뒤에 이어서 처리되어야 하는 로직을 담는다 .ㅡ콜백지옥 ??? 콜백함수를 겹겹이 연달아서 구현하는 형태...가독성 안좋고 이해 어려움
<Ajax >
ㅡ 비동기 자바스크립트와 XML 을 줄임말 ( JSON이 대체함)
ㅡ 페이지 내 필요한 만큼만 데이터를 가져와서 부분만 동적으로 보여줌
< promise > then 과 catch 로 ( finally )이루어짐
ㅡ js비동기 작업의 최종적인 성공이나 실패의 제어 흐름을 알아보기 쉽게 표현해주는 객체이다.
ㅡ비동기 로직 구현시 콜백함수를 활용하는 방식보다 더 편리해짐.
ㅡ ES6 에 도임 / 3가지 상태가 있음 ( pending 대기 , fulill 완료/성공, reject 완료/실패)
ㅡ promise chain >> 리턴랄때 똑같은 promise객체로 리턴해줘야함 .
ㅡ resolve (성공) reject (실패) -콜백과 유사한 형태로 생성함 .
< Async &wait >
ㅡ js 의 비동기 로직 처리 실패 패턴 중 가장 인간이 보기 쉬운상태이다.
ㅡ 일반적으로 코드를 위에서 아래로 읽으며 실행 순서를 파악하는 점을 감안하여 만든 기능이다.
Async
ㅡ 비동기 로직을 포함하는 함수 앞에 붙임
ㅡ 함수가 promise객체를 리턴하게 만듬. 함수내부에서 await키워드 사용이 가능하게 됨
wait
ㅡasync키워드를 붙인 함수안에서만 사용가능
ㅡ promise객체를 리턴하는 함수 호출 코드 앞쪽에만 붙일 수 있음
ㅡ promise 의 then()부분에서 전달받던 것 성공시, 결과값을 곧바로 얻을 수 있다 .
>>>callback > promise > async awit 순서로 가독성/ 개발편리성이 좋아짐 개발됨
< 이벤트 >
유저가 웹에서 html element 에 가하는 각종 액션에 의히 발생 되는 것 !
발생은 html 뼈대 요소이지만, 구체적 로직은 js로 구현한다 ~
HTML event예제
ㅡ 이미지 찾아보기 ~~~~
ㅡ 예제 HTML
<button onclick ="this.innerHTML=Date()" > 버튼 < /button>
ㅡ 예제 js - addEventListener() 메서드 method
<프로토타입 1>
ㅡ js는 prototype-based 언어라고 불린다.
ㅡ js는 모든 객체가 기본적으로 object라는 built-in-prototype을 탑재하고 있다.
ㅡ 생성자 함수와 new라는 키워드만 있으면 새로운 프로토타입을 만들 수 있음
ㅡ 일반 OOP용어의 js버전 은 ?
: class > 프로토타입 prototype
멤버변수 > 프로퍼티 property
<프로토타입 2>
ㅡ js에서 어떠한 객체(=개념)을 설계할 수있는 수단이다.
ㅡ js에서 객체의 설계도를 상속받을 수 있는 메커니즘이다. (원리,구조)
ㅡ 프로토타입 체인 : prototype 을 이용한 상속의 연결고리
ㅡ 객체의 프로토타입에 엑세스 하는 방법 2가지
obj.__proto__
Object.getPrototypeOf(obj)
ㅇ 객체 지향 프로그래밍 ( OOP)
: 코드 간결함을 유지하고 재사용성을 향상하기 위한 프로그래밍 방법론
ㅡ class와 object 개념을 활용/ 클래스로 상태와 기능을 기술하고 object를 생상할수 있음
* OOP 이해를 위한 필수 개념 !!!!! 중요
ㅡ 객체 object : 특정정보를 구성하는 독립적인 개념/ 단위를 일컫는 말
ㅡ 클래스 class : 객체를 생성할수 있는 내부 변수와 함수를 정의한 설계도
ㅡ 멤버변수 member variable : 클래스 객체의 각종 상태값을 저장하고 있는 자체 변수
ㅡ 메서드 method : 클래스 또는 클래스 객체가 보유한 자체 함수
ㅡ 생성자 constructor : 클래스로 객체를 생성할때 사용하는 객체 초기화 함수
ㅡ 인스턴스 instance ** : 클래스를 이용해 생성된 객체가 메모리에 올라간 것 ! 객체 생성코드가 실행된것 !
ㅡ 캡슐화 encapsulation : 객체의 상태정보와 기능을 클래스라는 테두리 안에 가두어 설계하는 것
ㅡ 상속 inheritance :이미 존재하는 클래스를 기반삼아 더 확장된 기능을 가진 클래스를 만드는 것
< 클래스 >
ㅇ js에서 클래스 란 ?
ㅡ 객체를 만들기 위한 설계도 ( = 일반적 정의와 동일하다 )
ㅡ 프로토타입 성질을 좀더 쉽게 사용하기 위한 '문법적 부가기능' 이다
ㅡ prototype과 달리 constructor 라는 함수가 별개로 있다.
ㅡ 클래스 선언은 호이스팅 되지 않음. (상단에서 참조안됨 )
ㅇ 좋은 클래스 만드는 법 ?
ㅡ 높은 응집도와 낮은 결합도를 가진 클래스를 설계하자
ㅡ 적절하게 관심사 분리하여 각 항목이 높은 독립성을 가지도록 설계한다
ㅡ 응집도 ( 한 묘듈 내부의 요소들이 서로 관련되어 있는 정도 )
ㅡ 결합도 ( 서로 다른 모듈, 클래스 간 상호 의존 정도 )
ㅇ 정적 (static) 변수 & 메서드
ㅡ 인스턴스가 아닌 "클래스" 자체에 붙게되는 속성이다.
ㅡ 클래스명으로 직접 참조 가능하다
ㅡ static이라는 키워드를 직접 사용한다.
ㅇ static 용도
ㅡ 클래스 단위로 관리되어야 하는 변수나 함수가 필요할때 사용한다
ㅡ ex1.http 요청을 보내는 작업들만 모아둔 클래스일때 공용 헤더 보관
ㅡex2.클래스 메서드에서 공통으로 사용할 에러 핸들링 or로깅 함수를 선언
ㅡ 상태정보가 필요없는 유사한 성질의 유틸성함수들을 클래스로 묶고 싶을때 사용
ㅇ 클래스 상속 (inheritance)
extends 키워드를 사용하여 상속/ super 키워드를 사용하여 부모 클래스 접근 가능하다.
잘 쓰면 - 시간단축 / 못 쓰면 - 코드간 의존성이 커져서 유지보수가 어려워짐
'언어 > Java Script' 카테고리의 다른 글
[IT]자바스크립트 - 연산자 실습 (0) | 2024.02.23 |
---|---|
[IT]자바스크립트 - 숫자 (부동소수점 ) (0) | 2024.02.22 |
[JS] 자바스크립트란 ? - 객체 (0) | 2024.02.22 |
[JS] 자바스크립트란 ? - 함수 (0) | 2024.02.22 |
[JS] 자바스크립트란 ? - 문 ( 제어문, 반복문 ) 의 개념과 예제 (0) | 2024.02.21 |