SlideShare a Scribd company logo
1 of 25
2016 자바카페 스파르탄 스터디
INSIDE Java Script 4
JAVACAFE
박진현
2016 자바카페 스파르탄 스터디들어가기 앞서..
 본 슬라이드는 2016 자바카페 스파르탄 스터디를 위해
제작되었습니다.
 본 슬라이드의 대부분의 내용은
인사이드 자바스크립트
(2014 송형주, 고현준) 의
내용을 참고하였습니다.
2016 자바카페 스파르탄 스터디목 차
 함수 정의(생성)
 함수 객체
 다양한 함수 형태
 함수 호출과 this
 프로토타입과 프로토타입 체이닝
2016 자바카페 스파르탄 스터디함수 정의(생성)
 함수 선언문
 함수 표현식
 Function() 생성자 함수
2016 자바카페 스파르탄 스터디함수 정의(생성)
 function add(x,y){
return x+y;
} // 함수 리터럴 && 기명함수 표현식
 함수도 하나의 값으로 취급 == 객체
 함수를 변수에 할당하는 것도 가능
 var add = function(x,y){
return x+y;
} //함수 표현식 //익명함수 표현식
2016 자바카페 스파르탄 스터디함수 정의(생성)
 함수 표현식 형태의 변화
2016 자바카페 스파르탄 스터디함수 정의(생성)
 함수 끝에는 꼭 ; 을 씁시다!
 안쓰면 자동으로 세미콜론을 삽입해주지만…
2016 자바카페 스파르탄 스터디함수 정의(생성)
 Function 생성자 : new Function(a1,a2,…aN, fBody)
 쓰는사람 보신분..? 내부적으로 사용할듯..
2016 자바카페 스파르탄 스터디함수 호이스팅
 함수를 선언하기 전에 사용해도 동작함
 Hoisting : Hoisting is JavaScript's default behavior of moving
declarations to the top.
 변수 생성과 초기화가 별도로 분리되어 진행됨 (5장에서..)
2016 자바카페 스파르탄 스터디함수 객체
 함수도 객체 == 함수 자체가 프로퍼티를 가짐!
 리터럴에 의한 생성
 변수나 배열의 요소, 객체의 프로퍼티등에 할당
 함수의 인자로 전달가능
 함수의 리턴값으로 리턴 가능
 동적으로 프로퍼티 생성 및 할당
 일급 객체! == 함수가 일반 객체처럼 값으로 취급됨
2016 자바카페 스파르탄 스터디함수 객체
 함수도 객체 == 함수 자체가 프로퍼티를 가짐!
 리터럴에 의한 생성
 변수나 배열의 요소, 객체의 프로퍼티등에 할당
 함수의 인자로 전달가능
 함수의 리턴값으로 리턴 가능
 동적으로 프로퍼티 생성 및 할당
2016 자바카페 스파르탄 스터디함수 객체
 기본 프로퍼티
 __proto__ == Function.prototype
 __proto__ != prototype
 함수 생성시 함수 자신과 연결된 prototype 객체를 동시 생성
2016 자바카페 스파르탄 스터디함수 형태
 콜백함수 : 이벤트 발생시 시스템이 호출해줌
 즉시실행 함수 : 정의와 동시에 실행
 최초 한번만 실행(초기화에 유용)
 대부분 라이브러리에서 사용
 함수 유효범위
 함수 내부의 매개변수와 함수는 함수 내에서만 유효
 변수 이름충돌등을 막을 수 있음
 내부 함수
2016 자바카페 스파르탄 스터디함수 형태
 내부 함수 : 함수내에 정의된 함수
 부모함수 변수에 접근이 가능
 내부함수는 일반적으로 부모함수 내부에서만 호출 가능
 클로저 : 부모 함수 스코프 내의 변수를 외부에서 참조하는 함수
 ???
 5장에서 계속
2016 자바카페 스파르탄 스터디함수 호출과 this
 arguments
 함수 호출시 암묵적으로 arguments 객체가 넘어감
 매개변수 체크를 엄하게 안함
 유사배열 객체 == Object != Array
2016 자바카페 스파르탄 스터디함수 호출과 this
 arguments
 함수 호출시 암묵적으로 arguments 객체가 넘어감
 매개변수 체크를 엄하게 안함
 유사배열 객체 == Object != Array
2016 자바카페 스파르탄 스터디함수 호출과 this
 this
 함수 호출시 암묵적으로 전달
 함수 호출 패턴에 따라 다른 this 객체를 참조함
 객체의 메소드를 호출할때 this 바인딩
 자신을 호출한 객체에 바인딩됨
2016 자바카페 스파르탄 스터디함수 호출과 this
 함수를 호출할때 this 바인딩
 전역 객체가 바인딩됨(window, global)
 내부함수를 호출했을때도 똑같이 적용됨!?
 내부 함수 호출패턴이 정의가 안되어있음..
 이를 막기 위해선.. this를 다른변수에 저장해야함
2016 자바카페 스파르탄 스터디함수 호출과 this
 생성자 함수를 호출할때 this
 기존함수에 new를 붙이면 생산자 함수
 되도록 대문자로 표기
 동작순서
 빈 객체 생성 → this 바인딩
→ 자신을 생성한 생성자 함수의 prototype 프로퍼티를 자신의
프로토타입 객체로 설정(???)
 this를 이용하여 프로퍼티 생성
 생성한 객체를 리턴
2016 자바카페 스파르탄 스터디함수 호출과 this
 객체 리터럴 방식과의 차이점
 객체 리터럴방식은 재생성 불가
 생성자 함수는 재생성 가능(피카츄 공장 만들기 등..)
 프로토타입 객체가 틀림 (가짜 포켓몬)
 new를 안붙이고 호출하면 엉뚱하게 동작함..
instanceof
2016 자바카페 스파르탄 스터디함수 호출과 this
 call과 apply 메소드를 이용한 명시적 this 바인딩
 기본적인 기능은 함수 호출
 다만 호출시 첫번째 인자로 넘어간 객체가 this에 바인딩됨
 apply는 인자로 배열을, call은 각각 하나하나 값으로 넘김
 대표적인 용도는 유사배열객체에서 배열메소드 사용
2016 자바카페 스파르탄 스터디함수 리턴
 일반 함수나 메서드는 리턴값을 지정하지 않으면
undefined 리턴
 생성자 함수에서 리턴값을 지정하지 않으면 생성된
객체가 리턴
 생성자 함수에서 리턴값으로 넘긴 값이 객체가 아닌 불린 숫자 문자열의
경우 이런값을 무시하고 this로 바인딩된 객체가 리턴됨
2016 자바카페 스파르탄 스터디프로토타입 체이닝
 프로토타입 기반 객체지향 프로그래밍
 클래스 개념이 없음
 모든 객체는 자신의 부모인 프로토타입 객체를 가리키는 링크가 있음 (__proto__)
 함수 객체의 prototype 과 __proto__ 는 다른
거임!
 자바스크립트에서 모든 객체는 자신을 생성한 생성자 함수의 prototype 프로퍼티가 가
리키는 프로토타입 객체를 자신의 부모 객체로 설정하는 __proto__ 링크로 연결한다(?)
 자기자신의 프로퍼티는 물론, 자기의 부모역활을
하는 프로토타입객체의 프로퍼티도 접근 가능
0
2016 자바카페 스파르탄 스터디프로토타입 체이닝
 객체 리터럴 방식으로 생성된 객체의 프로토타입 체이닝
 객체 리터럴 객체의 __proto__ == Object.prototype
 생성자 함수로 생성된 객체의 프로토타입 체이닝
 자바스크립트의 모든 객체는 자신을 생성한 생성자 함수의 prototype 프로퍼티가
가리키는 객체를 자신의 프로토타입 객체로 취급한다
 Object.prototype 객체는 프로토타입 체이닝의 종점(자바의 Object)
2016 자바카페 스파르탄 스터디프로토타입 체이닝
 객체 리터럴 방식으로 생성된 객체의 프로토타입 체이닝
 객체 리터럴 객체의 __proto__ == Object.prototype
 생성자 함수로 생성된 객체의 프로토타입 체이닝
 자바스크립트의 모든 객체는 자신을 생성한 생성자 함수의 prototype 프로퍼티가
가리키는 객체를 자신의 프로토타입 객체로 취급한다
 Object.prototype 객체는 프로토타입 체이닝의 종점(자바의 Object)

More Related Content

What's hot

ReactJS | 서버와 클라이어트에서 동시에 사용하는
ReactJS | 서버와 클라이어트에서 동시에 사용하는ReactJS | 서버와 클라이어트에서 동시에 사용하는
ReactJS | 서버와 클라이어트에서 동시에 사용하는Taegon Kim
 
(스프링 초보자를 위한)스프링 DI관련 어노테이션,자동스캐닝 컴포넌트(Spring Framework Auto-Scanning Component)
(스프링 초보자를 위한)스프링 DI관련 어노테이션,자동스캐닝 컴포넌트(Spring Framework Auto-Scanning Component)(스프링 초보자를 위한)스프링 DI관련 어노테이션,자동스캐닝 컴포넌트(Spring Framework Auto-Scanning Component)
(스프링 초보자를 위한)스프링 DI관련 어노테이션,자동스캐닝 컴포넌트(Spring Framework Auto-Scanning Component)탑크리에듀(구로디지털단지역3번출구 2분거리)
 
Django와 flask
Django와 flaskDjango와 flask
Django와 flaskJiho Lee
 
스프링 프레임워크 입문
스프링 프레임워크 입문스프링 프레임워크 입문
스프링 프레임워크 입문Keesun Baik
 
Effective c++ chapter 1,2 요약
Effective c++ chapter 1,2 요약Effective c++ chapter 1,2 요약
Effective c++ chapter 1,2 요약Nam Hyeonuk
 
백기선의 스프링 부트
백기선의 스프링 부트백기선의 스프링 부트
백기선의 스프링 부트Keesun Baik
 
[국비지원교육/재직자/실업자환급교육/IT실무학원추천/스프링교육추천]#5.스프링프레임워크 & 마이바티스 (Spring Framework, M...
[국비지원교육/재직자/실업자환급교육/IT실무학원추천/스프링교육추천]#5.스프링프레임워크 & 마이바티스 (Spring Framework, M...[국비지원교육/재직자/실업자환급교육/IT실무학원추천/스프링교육추천]#5.스프링프레임워크 & 마이바티스 (Spring Framework, M...
[국비지원교육/재직자/실업자환급교육/IT실무학원추천/스프링교육추천]#5.스프링프레임워크 & 마이바티스 (Spring Framework, M...탑크리에듀(구로디지털단지역3번출구 2분거리)
 
C++ 2학기 수행평가
C++ 2학기 수행평가C++ 2학기 수행평가
C++ 2학기 수행평가Jaehee Lee
 
7주 JavaScript Part2
7주 JavaScript Part27주 JavaScript Part2
7주 JavaScript Part2지수 윤
 
Effective c++ item9
Effective c++ item9Effective c++ item9
Effective c++ item9진화 손
 
#33.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...
#33.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...#33.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...
#33.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...탑크리에듀(구로디지털단지역3번출구 2분거리)
 
(#8.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis))스프링/자바교육/IT교육/스프링프레임워크교육/국비지...
(#8.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis))스프링/자바교육/IT교육/스프링프레임워크교육/국비지...(#8.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis))스프링/자바교육/IT교육/스프링프레임워크교육/국비지...
(#8.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis))스프링/자바교육/IT교육/스프링프레임워크교육/국비지...탑크리에듀(구로디지털단지역3번출구 2분거리)
 

What's hot (20)

Java 기초
Java 기초Java 기초
Java 기초
 
ReactJS | 서버와 클라이어트에서 동시에 사용하는
ReactJS | 서버와 클라이어트에서 동시에 사용하는ReactJS | 서버와 클라이어트에서 동시에 사용하는
ReactJS | 서버와 클라이어트에서 동시에 사용하는
 
(스프링 초보자를 위한)스프링 DI관련 어노테이션,자동스캐닝 컴포넌트(Spring Framework Auto-Scanning Component)
(스프링 초보자를 위한)스프링 DI관련 어노테이션,자동스캐닝 컴포넌트(Spring Framework Auto-Scanning Component)(스프링 초보자를 위한)스프링 DI관련 어노테이션,자동스캐닝 컴포넌트(Spring Framework Auto-Scanning Component)
(스프링 초보자를 위한)스프링 DI관련 어노테이션,자동스캐닝 컴포넌트(Spring Framework Auto-Scanning Component)
 
Django와 flask
Django와 flaskDjango와 flask
Django와 flask
 
(스프링초보자를위한)스프링 컨텍스트 설정과 관련된 어노테이션
(스프링초보자를위한)스프링 컨텍스트 설정과 관련된 어노테이션(스프링초보자를위한)스프링 컨텍스트 설정과 관련된 어노테이션
(스프링초보자를위한)스프링 컨텍스트 설정과 관련된 어노테이션
 
스프링 프레임워크 입문
스프링 프레임워크 입문스프링 프레임워크 입문
스프링 프레임워크 입문
 
Jpa more
Jpa moreJpa more
Jpa more
 
Spring Boot 1
Spring Boot 1Spring Boot 1
Spring Boot 1
 
Effective c++ chapter 1,2 요약
Effective c++ chapter 1,2 요약Effective c++ chapter 1,2 요약
Effective c++ chapter 1,2 요약
 
백기선의 스프링 부트
백기선의 스프링 부트백기선의 스프링 부트
백기선의 스프링 부트
 
[국비지원교육/재직자/실업자환급교육/IT실무학원추천/스프링교육추천]#5.스프링프레임워크 & 마이바티스 (Spring Framework, M...
[국비지원교육/재직자/실업자환급교육/IT실무학원추천/스프링교육추천]#5.스프링프레임워크 & 마이바티스 (Spring Framework, M...[국비지원교육/재직자/실업자환급교육/IT실무학원추천/스프링교육추천]#5.스프링프레임워크 & 마이바티스 (Spring Framework, M...
[국비지원교육/재직자/실업자환급교육/IT실무학원추천/스프링교육추천]#5.스프링프레임워크 & 마이바티스 (Spring Framework, M...
 
Spring boot DI
Spring boot DISpring boot DI
Spring boot DI
 
4-1. javascript
4-1. javascript4-1. javascript
4-1. javascript
 
C++ 2학기 수행평가
C++ 2학기 수행평가C++ 2학기 수행평가
C++ 2학기 수행평가
 
(C#,닷넷구조체강좌)구조체 개요 및 간단한 예제_닷넷,C#, WPF, 자마린실무교육
(C#,닷넷구조체강좌)구조체 개요 및 간단한 예제_닷넷,C#, WPF, 자마린실무교육(C#,닷넷구조체강좌)구조체 개요 및 간단한 예제_닷넷,C#, WPF, 자마린실무교육
(C#,닷넷구조체강좌)구조체 개요 및 간단한 예제_닷넷,C#, WPF, 자마린실무교육
 
7주 JavaScript Part2
7주 JavaScript Part27주 JavaScript Part2
7주 JavaScript Part2
 
Effective c++ item9
Effective c++ item9Effective c++ item9
Effective c++ item9
 
#33.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...
#33.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...#33.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...
#33.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...
 
Light Tutorial Django
Light Tutorial DjangoLight Tutorial Django
Light Tutorial Django
 
(#8.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis))스프링/자바교육/IT교육/스프링프레임워크교육/국비지...
(#8.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis))스프링/자바교육/IT교육/스프링프레임워크교육/국비지...(#8.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis))스프링/자바교육/IT교육/스프링프레임워크교육/국비지...
(#8.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis))스프링/자바교육/IT교육/스프링프레임워크교육/국비지...
 

Viewers also liked

라즈베리파이로 시작하는 Iot세상
라즈베리파이로 시작하는 Iot세상라즈베리파이로 시작하는 Iot세상
라즈베리파이로 시작하는 Iot세상Jin-Hyun Park
 
[D2CAMPUS] Algorithm tips - ALGOS
[D2CAMPUS] Algorithm tips - ALGOS[D2CAMPUS] Algorithm tips - ALGOS
[D2CAMPUS] Algorithm tips - ALGOSNAVER D2
 
[D2 CAMPUS] 분야별 모임 '보안' 발표자료
[D2 CAMPUS] 분야별 모임 '보안' 발표자료[D2 CAMPUS] 분야별 모임 '보안' 발표자료
[D2 CAMPUS] 분야별 모임 '보안' 발표자료NAVER D2
 
Django에서 websocket을 사용하는 방법
Django에서 websocket을 사용하는 방법Django에서 websocket을 사용하는 방법
Django에서 websocket을 사용하는 방법NAVER D2
 
swig를 이용한 C++ 랩핑
swig를 이용한 C++ 랩핑swig를 이용한 C++ 랩핑
swig를 이용한 C++ 랩핑NAVER D2
 
파이어베이스 네이버 밋업발표
파이어베이스 네이버 밋업발표파이어베이스 네이버 밋업발표
파이어베이스 네이버 밋업발표NAVER D2
 
혁신적인 웹컴포넌트 라이브러리 - Polymer
혁신적인 웹컴포넌트 라이브러리 - Polymer혁신적인 웹컴포넌트 라이브러리 - Polymer
혁신적인 웹컴포넌트 라이브러리 - PolymerJae Sung Park
 
개알못의 오픈소스이야기 - 이상준님
개알못의 오픈소스이야기 - 이상준님개알못의 오픈소스이야기 - 이상준님
개알못의 오픈소스이야기 - 이상준님NAVER D2
 
JavaScript 비동기 프로그래밍 집중 탐구 - 조유성님
JavaScript 비동기 프로그래밍 집중 탐구 - 조유성님JavaScript 비동기 프로그래밍 집중 탐구 - 조유성님
JavaScript 비동기 프로그래밍 집중 탐구 - 조유성님NAVER D2
 
Papago/N2MT 개발이야기
Papago/N2MT 개발이야기Papago/N2MT 개발이야기
Papago/N2MT 개발이야기NAVER D2
 
Universal Approximation Theorem
Universal Approximation TheoremUniversal Approximation Theorem
Universal Approximation TheoremJamie Seol
 
데이터분석과통계2 - 최재걸님
데이터분석과통계2 - 최재걸님데이터분석과통계2 - 최재걸님
데이터분석과통계2 - 최재걸님NAVER D2
 
텀 프로젝트에서 제품 프로젝트로 - 성준영님
텀 프로젝트에서 제품 프로젝트로 - 성준영님텀 프로젝트에서 제품 프로젝트로 - 성준영님
텀 프로젝트에서 제품 프로젝트로 - 성준영님NAVER D2
 

Viewers also liked (13)

라즈베리파이로 시작하는 Iot세상
라즈베리파이로 시작하는 Iot세상라즈베리파이로 시작하는 Iot세상
라즈베리파이로 시작하는 Iot세상
 
[D2CAMPUS] Algorithm tips - ALGOS
[D2CAMPUS] Algorithm tips - ALGOS[D2CAMPUS] Algorithm tips - ALGOS
[D2CAMPUS] Algorithm tips - ALGOS
 
[D2 CAMPUS] 분야별 모임 '보안' 발표자료
[D2 CAMPUS] 분야별 모임 '보안' 발표자료[D2 CAMPUS] 분야별 모임 '보안' 발표자료
[D2 CAMPUS] 분야별 모임 '보안' 발표자료
 
Django에서 websocket을 사용하는 방법
Django에서 websocket을 사용하는 방법Django에서 websocket을 사용하는 방법
Django에서 websocket을 사용하는 방법
 
swig를 이용한 C++ 랩핑
swig를 이용한 C++ 랩핑swig를 이용한 C++ 랩핑
swig를 이용한 C++ 랩핑
 
파이어베이스 네이버 밋업발표
파이어베이스 네이버 밋업발표파이어베이스 네이버 밋업발표
파이어베이스 네이버 밋업발표
 
혁신적인 웹컴포넌트 라이브러리 - Polymer
혁신적인 웹컴포넌트 라이브러리 - Polymer혁신적인 웹컴포넌트 라이브러리 - Polymer
혁신적인 웹컴포넌트 라이브러리 - Polymer
 
개알못의 오픈소스이야기 - 이상준님
개알못의 오픈소스이야기 - 이상준님개알못의 오픈소스이야기 - 이상준님
개알못의 오픈소스이야기 - 이상준님
 
JavaScript 비동기 프로그래밍 집중 탐구 - 조유성님
JavaScript 비동기 프로그래밍 집중 탐구 - 조유성님JavaScript 비동기 프로그래밍 집중 탐구 - 조유성님
JavaScript 비동기 프로그래밍 집중 탐구 - 조유성님
 
Papago/N2MT 개발이야기
Papago/N2MT 개발이야기Papago/N2MT 개발이야기
Papago/N2MT 개발이야기
 
Universal Approximation Theorem
Universal Approximation TheoremUniversal Approximation Theorem
Universal Approximation Theorem
 
데이터분석과통계2 - 최재걸님
데이터분석과통계2 - 최재걸님데이터분석과통계2 - 최재걸님
데이터분석과통계2 - 최재걸님
 
텀 프로젝트에서 제품 프로젝트로 - 성준영님
텀 프로젝트에서 제품 프로젝트로 - 성준영님텀 프로젝트에서 제품 프로젝트로 - 성준영님
텀 프로젝트에서 제품 프로젝트로 - 성준영님
 

Similar to 스파르탄Js in sidejs4

0.javascript기본(~3일차내)
0.javascript기본(~3일차내)0.javascript기본(~3일차내)
0.javascript기본(~3일차내)Sung-hoon Ma
 
이것이 자바다 Chap.11 기본 API 클래스(java)(KOR)
이것이 자바다 Chap.11 기본 API 클래스(java)(KOR)이것이 자바다 Chap.11 기본 API 클래스(java)(KOR)
이것이 자바다 Chap.11 기본 API 클래스(java)(KOR)MIN SEOK KOO
 
이펙티브 C++ 5,6 장 스터디
이펙티브 C++ 5,6 장 스터디이펙티브 C++ 5,6 장 스터디
이펙티브 C++ 5,6 장 스터디quxn6
 
자바스크립트 함수
자바스크립트 함수자바스크립트 함수
자바스크립트 함수유진 변
 
파이썬 둘째날
파이썬 둘째날파이썬 둘째날
파이썬 둘째날명준 김
 
Jdk(java) 7 - 5. invoke-dynamic
Jdk(java) 7 - 5. invoke-dynamicJdk(java) 7 - 5. invoke-dynamic
Jdk(java) 7 - 5. invoke-dynamicknight1128
 
Working Effectively With Legacy Code - xp2005
Working Effectively With Legacy Code - xp2005Working Effectively With Legacy Code - xp2005
Working Effectively With Legacy Code - xp2005Ryan Park
 
레거시 시스템에 Django 들이밀기
레거시 시스템에 Django 들이밀기레거시 시스템에 Django 들이밀기
레거시 시스템에 Django 들이밀기Jiyong Jung
 
You don't know JS / this / chapter 1-2
You don't know JS / this / chapter 1-2You don't know JS / this / chapter 1-2
You don't know JS / this / chapter 1-2Kiwoong Kwon
 
Javascript 교육자료 pdf
Javascript 교육자료 pdfJavascript 교육자료 pdf
Javascript 교육자료 pdfHyosang Hong
 
파이썬 함수 이해하기
파이썬 함수 이해하기 파이썬 함수 이해하기
파이썬 함수 이해하기 Yong Joon Moon
 
[C언어]함수오버로딩과오버라이딩
[C언어]함수오버로딩과오버라이딩[C언어]함수오버로딩과오버라이딩
[C언어]함수오버로딩과오버라이딩jusingame
 
Javascript 조금 더 잘 알기
Javascript 조금 더 잘 알기Javascript 조금 더 잘 알기
Javascript 조금 더 잘 알기jongho jeong
 
일단 시작하는 코틀린
일단 시작하는 코틀린일단 시작하는 코틀린
일단 시작하는 코틀린Park JoongSoo
 

Similar to 스파르탄Js in sidejs4 (20)

0.javascript기본(~3일차내)
0.javascript기본(~3일차내)0.javascript기본(~3일차내)
0.javascript기본(~3일차내)
 
이것이 자바다 Chap.11 기본 API 클래스(java)(KOR)
이것이 자바다 Chap.11 기본 API 클래스(java)(KOR)이것이 자바다 Chap.11 기본 API 클래스(java)(KOR)
이것이 자바다 Chap.11 기본 API 클래스(java)(KOR)
 
이펙티브 C++ 5,6 장 스터디
이펙티브 C++ 5,6 장 스터디이펙티브 C++ 5,6 장 스터디
이펙티브 C++ 5,6 장 스터디
 
자바스크립트 함수
자바스크립트 함수자바스크립트 함수
자바스크립트 함수
 
파이썬 둘째날
파이썬 둘째날파이썬 둘째날
파이썬 둘째날
 
Scala syntax function
Scala syntax functionScala syntax function
Scala syntax function
 
Jdk(java) 7 - 5. invoke-dynamic
Jdk(java) 7 - 5. invoke-dynamicJdk(java) 7 - 5. invoke-dynamic
Jdk(java) 7 - 5. invoke-dynamic
 
Working Effectively With Legacy Code - xp2005
Working Effectively With Legacy Code - xp2005Working Effectively With Legacy Code - xp2005
Working Effectively With Legacy Code - xp2005
 
레거시 시스템에 Django 들이밀기
레거시 시스템에 Django 들이밀기레거시 시스템에 Django 들이밀기
레거시 시스템에 Django 들이밀기
 
5.Spring IoC&DI(DI와 관련된 어노테이션)
5.Spring IoC&DI(DI와 관련된 어노테이션)5.Spring IoC&DI(DI와 관련된 어노테이션)
5.Spring IoC&DI(DI와 관련된 어노테이션)
 
You don't know JS / this / chapter 1-2
You don't know JS / this / chapter 1-2You don't know JS / this / chapter 1-2
You don't know JS / this / chapter 1-2
 
Javascript 교육자료 pdf
Javascript 교육자료 pdfJavascript 교육자료 pdf
Javascript 교육자료 pdf
 
파이썬 함수 이해하기
파이썬 함수 이해하기 파이썬 함수 이해하기
파이썬 함수 이해하기
 
[C언어]함수오버로딩과오버라이딩
[C언어]함수오버로딩과오버라이딩[C언어]함수오버로딩과오버라이딩
[C언어]함수오버로딩과오버라이딩
 
Javascript
JavascriptJavascript
Javascript
 
Java tutorial
Java tutorialJava tutorial
Java tutorial
 
Java_10 람다
Java_10 람다Java_10 람다
Java_10 람다
 
Java lambda
Java lambdaJava lambda
Java lambda
 
Javascript 조금 더 잘 알기
Javascript 조금 더 잘 알기Javascript 조금 더 잘 알기
Javascript 조금 더 잘 알기
 
일단 시작하는 코틀린
일단 시작하는 코틀린일단 시작하는 코틀린
일단 시작하는 코틀린
 

Recently uploaded

Merge (Kitworks Team Study 이성수 발표자료 240426)
Merge (Kitworks Team Study 이성수 발표자료 240426)Merge (Kitworks Team Study 이성수 발표자료 240426)
Merge (Kitworks Team Study 이성수 발표자료 240426)Wonjun Hwang
 
Console API (Kitworks Team Study 백혜인 발표자료)
Console API (Kitworks Team Study 백혜인 발표자료)Console API (Kitworks Team Study 백혜인 발표자료)
Console API (Kitworks Team Study 백혜인 발표자료)Wonjun Hwang
 
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...Kim Daeun
 
MOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution DetectionMOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution DetectionKim Daeun
 
A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)Tae Young Lee
 
캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차캐드앤그래픽스
 

Recently uploaded (6)

Merge (Kitworks Team Study 이성수 발표자료 240426)
Merge (Kitworks Team Study 이성수 발표자료 240426)Merge (Kitworks Team Study 이성수 발표자료 240426)
Merge (Kitworks Team Study 이성수 발표자료 240426)
 
Console API (Kitworks Team Study 백혜인 발표자료)
Console API (Kitworks Team Study 백혜인 발표자료)Console API (Kitworks Team Study 백혜인 발표자료)
Console API (Kitworks Team Study 백혜인 발표자료)
 
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
 
MOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution DetectionMOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution Detection
 
A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)
 
캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차
 

스파르탄Js in sidejs4

  • 1. 2016 자바카페 스파르탄 스터디 INSIDE Java Script 4 JAVACAFE 박진현
  • 2. 2016 자바카페 스파르탄 스터디들어가기 앞서..  본 슬라이드는 2016 자바카페 스파르탄 스터디를 위해 제작되었습니다.  본 슬라이드의 대부분의 내용은 인사이드 자바스크립트 (2014 송형주, 고현준) 의 내용을 참고하였습니다.
  • 3. 2016 자바카페 스파르탄 스터디목 차  함수 정의(생성)  함수 객체  다양한 함수 형태  함수 호출과 this  프로토타입과 프로토타입 체이닝
  • 4. 2016 자바카페 스파르탄 스터디함수 정의(생성)  함수 선언문  함수 표현식  Function() 생성자 함수
  • 5. 2016 자바카페 스파르탄 스터디함수 정의(생성)  function add(x,y){ return x+y; } // 함수 리터럴 && 기명함수 표현식  함수도 하나의 값으로 취급 == 객체  함수를 변수에 할당하는 것도 가능  var add = function(x,y){ return x+y; } //함수 표현식 //익명함수 표현식
  • 6. 2016 자바카페 스파르탄 스터디함수 정의(생성)  함수 표현식 형태의 변화
  • 7. 2016 자바카페 스파르탄 스터디함수 정의(생성)  함수 끝에는 꼭 ; 을 씁시다!  안쓰면 자동으로 세미콜론을 삽입해주지만…
  • 8. 2016 자바카페 스파르탄 스터디함수 정의(생성)  Function 생성자 : new Function(a1,a2,…aN, fBody)  쓰는사람 보신분..? 내부적으로 사용할듯..
  • 9. 2016 자바카페 스파르탄 스터디함수 호이스팅  함수를 선언하기 전에 사용해도 동작함  Hoisting : Hoisting is JavaScript's default behavior of moving declarations to the top.  변수 생성과 초기화가 별도로 분리되어 진행됨 (5장에서..)
  • 10. 2016 자바카페 스파르탄 스터디함수 객체  함수도 객체 == 함수 자체가 프로퍼티를 가짐!  리터럴에 의한 생성  변수나 배열의 요소, 객체의 프로퍼티등에 할당  함수의 인자로 전달가능  함수의 리턴값으로 리턴 가능  동적으로 프로퍼티 생성 및 할당  일급 객체! == 함수가 일반 객체처럼 값으로 취급됨
  • 11. 2016 자바카페 스파르탄 스터디함수 객체  함수도 객체 == 함수 자체가 프로퍼티를 가짐!  리터럴에 의한 생성  변수나 배열의 요소, 객체의 프로퍼티등에 할당  함수의 인자로 전달가능  함수의 리턴값으로 리턴 가능  동적으로 프로퍼티 생성 및 할당
  • 12. 2016 자바카페 스파르탄 스터디함수 객체  기본 프로퍼티  __proto__ == Function.prototype  __proto__ != prototype  함수 생성시 함수 자신과 연결된 prototype 객체를 동시 생성
  • 13. 2016 자바카페 스파르탄 스터디함수 형태  콜백함수 : 이벤트 발생시 시스템이 호출해줌  즉시실행 함수 : 정의와 동시에 실행  최초 한번만 실행(초기화에 유용)  대부분 라이브러리에서 사용  함수 유효범위  함수 내부의 매개변수와 함수는 함수 내에서만 유효  변수 이름충돌등을 막을 수 있음  내부 함수
  • 14. 2016 자바카페 스파르탄 스터디함수 형태  내부 함수 : 함수내에 정의된 함수  부모함수 변수에 접근이 가능  내부함수는 일반적으로 부모함수 내부에서만 호출 가능  클로저 : 부모 함수 스코프 내의 변수를 외부에서 참조하는 함수  ???  5장에서 계속
  • 15. 2016 자바카페 스파르탄 스터디함수 호출과 this  arguments  함수 호출시 암묵적으로 arguments 객체가 넘어감  매개변수 체크를 엄하게 안함  유사배열 객체 == Object != Array
  • 16. 2016 자바카페 스파르탄 스터디함수 호출과 this  arguments  함수 호출시 암묵적으로 arguments 객체가 넘어감  매개변수 체크를 엄하게 안함  유사배열 객체 == Object != Array
  • 17. 2016 자바카페 스파르탄 스터디함수 호출과 this  this  함수 호출시 암묵적으로 전달  함수 호출 패턴에 따라 다른 this 객체를 참조함  객체의 메소드를 호출할때 this 바인딩  자신을 호출한 객체에 바인딩됨
  • 18. 2016 자바카페 스파르탄 스터디함수 호출과 this  함수를 호출할때 this 바인딩  전역 객체가 바인딩됨(window, global)  내부함수를 호출했을때도 똑같이 적용됨!?  내부 함수 호출패턴이 정의가 안되어있음..  이를 막기 위해선.. this를 다른변수에 저장해야함
  • 19. 2016 자바카페 스파르탄 스터디함수 호출과 this  생성자 함수를 호출할때 this  기존함수에 new를 붙이면 생산자 함수  되도록 대문자로 표기  동작순서  빈 객체 생성 → this 바인딩 → 자신을 생성한 생성자 함수의 prototype 프로퍼티를 자신의 프로토타입 객체로 설정(???)  this를 이용하여 프로퍼티 생성  생성한 객체를 리턴
  • 20. 2016 자바카페 스파르탄 스터디함수 호출과 this  객체 리터럴 방식과의 차이점  객체 리터럴방식은 재생성 불가  생성자 함수는 재생성 가능(피카츄 공장 만들기 등..)  프로토타입 객체가 틀림 (가짜 포켓몬)  new를 안붙이고 호출하면 엉뚱하게 동작함.. instanceof
  • 21. 2016 자바카페 스파르탄 스터디함수 호출과 this  call과 apply 메소드를 이용한 명시적 this 바인딩  기본적인 기능은 함수 호출  다만 호출시 첫번째 인자로 넘어간 객체가 this에 바인딩됨  apply는 인자로 배열을, call은 각각 하나하나 값으로 넘김  대표적인 용도는 유사배열객체에서 배열메소드 사용
  • 22. 2016 자바카페 스파르탄 스터디함수 리턴  일반 함수나 메서드는 리턴값을 지정하지 않으면 undefined 리턴  생성자 함수에서 리턴값을 지정하지 않으면 생성된 객체가 리턴  생성자 함수에서 리턴값으로 넘긴 값이 객체가 아닌 불린 숫자 문자열의 경우 이런값을 무시하고 this로 바인딩된 객체가 리턴됨
  • 23. 2016 자바카페 스파르탄 스터디프로토타입 체이닝  프로토타입 기반 객체지향 프로그래밍  클래스 개념이 없음  모든 객체는 자신의 부모인 프로토타입 객체를 가리키는 링크가 있음 (__proto__)  함수 객체의 prototype 과 __proto__ 는 다른 거임!  자바스크립트에서 모든 객체는 자신을 생성한 생성자 함수의 prototype 프로퍼티가 가 리키는 프로토타입 객체를 자신의 부모 객체로 설정하는 __proto__ 링크로 연결한다(?)  자기자신의 프로퍼티는 물론, 자기의 부모역활을 하는 프로토타입객체의 프로퍼티도 접근 가능 0
  • 24. 2016 자바카페 스파르탄 스터디프로토타입 체이닝  객체 리터럴 방식으로 생성된 객체의 프로토타입 체이닝  객체 리터럴 객체의 __proto__ == Object.prototype  생성자 함수로 생성된 객체의 프로토타입 체이닝  자바스크립트의 모든 객체는 자신을 생성한 생성자 함수의 prototype 프로퍼티가 가리키는 객체를 자신의 프로토타입 객체로 취급한다  Object.prototype 객체는 프로토타입 체이닝의 종점(자바의 Object)
  • 25. 2016 자바카페 스파르탄 스터디프로토타입 체이닝  객체 리터럴 방식으로 생성된 객체의 프로토타입 체이닝  객체 리터럴 객체의 __proto__ == Object.prototype  생성자 함수로 생성된 객체의 프로토타입 체이닝  자바스크립트의 모든 객체는 자신을 생성한 생성자 함수의 prototype 프로퍼티가 가리키는 객체를 자신의 프로토타입 객체로 취급한다  Object.prototype 객체는 프로토타입 체이닝의 종점(자바의 Object)