SlideShare uma empresa Scribd logo
1 de 57
Baixar para ler offline
You don’t know JS 2
- Chapter1. this or That?
- Chapter2. this All makes sense now!
20180818 1주차 스터디 / 권기웅
Part 1. this라나 뭐라나🤔
this를 쓰면 좋와용
this를 안쓰고 context 객체를 명시할 수도 있어요
this라나 뭐라나🤔
하지만!
“뒷부분에서 객체와 프로토타입을 배우고 나면
여러 함수가 적절한 콘텍스트 객체를 자동 참조하는 구조가
얼마나 편리한지 실감하게 될 것이다”
this라나 뭐라나🤔
하지만!
“뒷부분에서 객체와 프로토타입을 배우고 나면
여러 함수가 적절한 콘텍스트 객체를 자동 참조하는 구조가
얼마나 편리한지 실감하게 될 것이다”
좋다니까 일단…
우리가 this에게 헷갈리는 것들🤔
우리가 this에게 헷갈리는 것들🤔
자기 자신일거야
우리가 this에게 헷갈리는 것들🤔
자기 자신일거야
자신의 스코프일거야
우리가 this에게 헷갈리는 것들🤔
자기 자신일거야
자신의 스코프일거야
대충 Java의 this같겠지 뭐 🐶
우리가 this에게 헷갈리는 것들🤔
자기 자신일거야
대충 Java의 this같겠지 뭐 🐶
우리가 this에게 헷갈리는 것들🤔
자기 자신일거야
우리가 this에게 헷갈리는 것들🤔
자기 자신일거야
우리가 this에게 헷갈리는 것들🤔
자기 자신일거야
this = 함수 그 자체
this = 함수 그 자체
this = 함수 그 자체
this는 함수 자체니까 this.count == foo.count
this = 함수 그 자체
this는 함수 자체니까 this.count == foo.count
foo에 count 프로퍼티 생성
this = 함수 그 자체
this는 함수 자체니까 this.count == foo.count
하지만 증가하지 않아따…
foo에 count 프로퍼티 생성
렉시컬 스코프를 통해 우회하는 방법
렉시컬 스코프를 통해 우회하는 방법
전역스코프에 data Object 생성
렉시컬 스코프를 통해 우회하는 방법
전역스코프에 data Object 생성
전역 스코프의 data Object의
count 프로퍼티 증가
렉시컬 스코프를 통해 우회하는 방법
전역스코프에 data Object 생성
전역 스코프의 data Object의
count 프로퍼티 증가
// 4
렉시컬 스코프를 통해 우회하는 방법2
렉시컬 스코프를 통해 우회하는 방법2
전역 스코프에 있는 foo 기명함수에
count 프로퍼티 생성
렉시컬 스코프를 통해 우회하는 방법2
전역 스코프에 있는 foo 기명함수에
count 프로퍼티 생성
foo 함수의 count 프로퍼티 값 증가
렉시컬 스코프를 통해 우회하는 방법2
전역 스코프에 있는 foo 기명함수에
count 프로퍼티 생성
foo 함수의 count 프로퍼티 값 증가
// 4
렉시컬 스코프로 우회했다?
간단하게 얘기하자면 전역 스코프를 활용했다는 의미
어렵지 않아요 우회하지 마세요🐶
어렵지 않아요 우회하지 마세요🐶
call 메서드는 모든 함수 객체에 prototype으로 존재하며
인자는 (this로 사용할 값[, arg1 [, arg2[, …]]])
어렵지 않아요 우회하지 마세요🐶
call 메서드는 모든 함수 객체에 prototype으로 존재하며
인자는 (this로 사용할 값[, arg1 [, arg2[, …]]])
this = foo
우리가 this에게 헷갈리는 것들🤔
자기 자신일거야
자신의 스코프일거야
대충 Java의 this같겠지 뭐 🐶
우리가 this에게 헷갈리는 것들🤔
자기 자신일거야
자신의 스코프일거야
우리가 this에게 헷갈리는 것들🤔
자신의 스코프일거야
우리가 this에게 헷갈리는 것들🤔
자신의 스코프
우리가 this에게 헷갈리는 것들🤔
자신의 스코프
this = 함수의 렉시컬 스코프
this가 암시적으로 함수의 렉시컬 스코프를 가리키도록..
this가 암시적으로 함수의 렉시컬 스코프를 가리키도록..
여기까지는 도달하지 않아요ㅠㅠ
this가 암시적으로 함수의 렉시컬 스코프를 가리키도록..
여기까지는 도달하지 않아요ㅠㅠ
this.bar는 아직 함수가 아니기 때문에 TypeError!
호이스팅과 관련있을것 같습니다
this는 자기 자신도 아니고,
함수의 스코프도 아니다
그렇다면 this는?
this는 😎
작성 시점이 아닌 런타임 시점에 바인딩
함수 선언 위치와 상관없이 this 바인딩은
오로지 어떻게 함수를 호출했느냐에 따라 정해집니다
함수를 호출하면 이런게 생김
Activation Record = Execution Context
이 때, this 에 대한 정보도 결정됨
알고싶다 Activation Record…🙄
알고싶다 Activation Record…🙄
야크털 깎는중…(60%)
Activation Record?
= 실행 콘텍스트(Execution context)
Activation Record?
활성 레코드는 함수가 호출되는 시점에 생성되며, 함수가 실행될 때 필요한 정보를 가지고 있다
Activation Record(=Execution Context)
Activation Record?
활성 레코드는 함수가 호출되는 시점에 생성되며, 함수가 실행될 때 필요한 정보를 가지고 있다
Activation Record(=Execution Context)
Variable
Objects
변수(변수, 함수…)
매개변수 정보
내부 함수 정보
Activation Record?
활성 레코드는 함수가 호출되는 시점에 생성되며, 함수가 실행될 때 필요한 정보를 가지고 있다
Activation Record(=Execution Context)
Variable
Objects
변수(변수, 함수…)
매개변수 정보
내부 함수 정보
[[Scopes]]
전역
현재 함수 스코프
…
Activation Record?
활성 레코드는 함수가 호출되는 시점에 생성되며, 함수가 실행될 때 필요한 정보를 가지고 있다
Activation Record(=Execution Context)
Variable
Objects
변수(변수, 함수…)
매개변수 정보
내부 함수 정보
[[Scopes]]
전역
현재 함수 스코프
…
this
호출시점에 따라
결정되는 this 값
우리는 Activation Record 생성시의
this 값을 결정하는 부분을 배우는 중🤗
Part 2. this가 이런거로군!👌
this 바인딩은 런타임에 호출부에 의해 정해진다고 하니..
baz 함수의 호출부는? / call stack은?
bar 함수의 호출부는? / call stack은?
foo 함수의 호출부는? / call stack은?
baz 함수를 실행하는 현재의 call stack은?
this 바인딩은 런타임에 호출부에 의해 정해진다고 하니..
bar 함수의 호출부는? / call stack은?
foo 함수의 호출부는? / call stack은?
baz 함수를 실행하는 현재의 call stack은?
this 바인딩은 런타임에 호출부에 의해 정해진다고 하니..
foo 함수의 호출부는? / call stack은?
baz 함수를 실행하는 현재의 call stack은?
this 바인딩은 런타임에 호출부에 의해 정해진다고 하니..
baz 함수를 실행하는 현재의 call stack은?
this 바인딩은 런타임에 호출부에 의해 정해진다고 하니..

Mais conteúdo relacionado

Mais procurados

비개발자를 위한 Javascript 알아가기 #6
비개발자를 위한 Javascript 알아가기 #6비개발자를 위한 Javascript 알아가기 #6
비개발자를 위한 Javascript 알아가기 #6
민태 김
 
More effective c++ 2
More effective c++ 2More effective c++ 2
More effective c++ 2
현찬 양
 
이펙티브 C++ (7~9)
이펙티브 C++ (7~9)이펙티브 C++ (7~9)
이펙티브 C++ (7~9)
익성 조
 
Effective c++ 4
Effective c++ 4Effective c++ 4
Effective c++ 4
현찬 양
 
Effective c++ 2
Effective c++ 2Effective c++ 2
Effective c++ 2
현찬 양
 
Effective c++ Chapter1,2
Effective c++ Chapter1,2Effective c++ Chapter1,2
Effective c++ Chapter1,2
문익 장
 
More effective c++ 3
More effective c++ 3More effective c++ 3
More effective c++ 3
현찬 양
 
Effective c++ 1
Effective c++ 1Effective c++ 1
Effective c++ 1
현찬 양
 

Mais procurados (20)

이펙티브 C++ 스터디
이펙티브 C++ 스터디이펙티브 C++ 스터디
이펙티브 C++ 스터디
 
비개발자를 위한 Javascript 알아가기 #6
비개발자를 위한 Javascript 알아가기 #6비개발자를 위한 Javascript 알아가기 #6
비개발자를 위한 Javascript 알아가기 #6
 
effective c++ chapter 3~4 정리
effective c++ chapter 3~4 정리effective c++ chapter 3~4 정리
effective c++ chapter 3~4 정리
 
More effective c++ 항목30부터
More effective c++ 항목30부터More effective c++ 항목30부터
More effective c++ 항목30부터
 
More effective c++ 2
More effective c++ 2More effective c++ 2
More effective c++ 2
 
이펙티브 C++ (7~9)
이펙티브 C++ (7~9)이펙티브 C++ (7~9)
이펙티브 C++ (7~9)
 
Effective c++ 1,2
Effective c++ 1,2Effective c++ 1,2
Effective c++ 1,2
 
Effective c++ 4
Effective c++ 4Effective c++ 4
Effective c++ 4
 
[Swift] Generics
[Swift] Generics[Swift] Generics
[Swift] Generics
 
Effective C++ Chaper 1
Effective C++ Chaper 1Effective C++ Chaper 1
Effective C++ Chaper 1
 
Effective c++ chapter1 2_dcshin
Effective c++ chapter1 2_dcshinEffective c++ chapter1 2_dcshin
Effective c++ chapter1 2_dcshin
 
Effective c++ 2
Effective c++ 2Effective c++ 2
Effective c++ 2
 
Effective c++ Chapter1,2
Effective c++ Chapter1,2Effective c++ Chapter1,2
Effective c++ Chapter1,2
 
Lua script
Lua scriptLua script
Lua script
 
Start IoT with JavaScript - 6.함수
Start IoT with JavaScript - 6.함수Start IoT with JavaScript - 6.함수
Start IoT with JavaScript - 6.함수
 
Effective cpp
Effective cppEffective cpp
Effective cpp
 
파이썬 둘째날
파이썬 둘째날파이썬 둘째날
파이썬 둘째날
 
Effective c++ chapter 1,2 요약
Effective c++ chapter 1,2 요약Effective c++ chapter 1,2 요약
Effective c++ chapter 1,2 요약
 
More effective c++ 3
More effective c++ 3More effective c++ 3
More effective c++ 3
 
Effective c++ 1
Effective c++ 1Effective c++ 1
Effective c++ 1
 

Semelhante a You don't know JS / this / chapter 1-2

함수형 프로그래밍
함수형 프로그래밍함수형 프로그래밍
함수형 프로그래밍
QooJuice
 
자바스크립트 함수
자바스크립트 함수자바스크립트 함수
자바스크립트 함수
유진 변
 
M5 1 1
M5 1 1M5 1 1
M5 1 1
nexthw
 
0.javascript기본(~3일차내)
0.javascript기본(~3일차내)0.javascript기본(~3일차내)
0.javascript기본(~3일차내)
Sung-hoon Ma
 
외계어 스터디 3/5 function and object
외계어 스터디 3/5   function and object외계어 스터디 3/5   function and object
외계어 스터디 3/5 function and object
민태 김
 
엄준일 04일차 HTML/Javascript 교육
엄준일 04일차 HTML/Javascript 교육엄준일 04일차 HTML/Javascript 교육
엄준일 04일차 HTML/Javascript 교육
준일 엄
 

Semelhante a You don't know JS / this / chapter 1-2 (20)

How to use the Ruby programing language
How to use the Ruby programing languageHow to use the Ruby programing language
How to use the Ruby programing language
 
Jupyter notebook 이해하기
Jupyter notebook 이해하기 Jupyter notebook 이해하기
Jupyter notebook 이해하기
 
비전공자의 자바스크립트 도전기
비전공자의 자바스크립트 도전기비전공자의 자바스크립트 도전기
비전공자의 자바스크립트 도전기
 
함수형 프로그래밍
함수형 프로그래밍함수형 프로그래밍
함수형 프로그래밍
 
Java tutorial
Java tutorialJava tutorial
Java tutorial
 
Javascript 교육자료 pdf
Javascript 교육자료 pdfJavascript 교육자료 pdf
Javascript 교육자료 pdf
 
자바스크립트 함수
자바스크립트 함수자바스크립트 함수
자바스크립트 함수
 
[하코사 세미나] 비전공자의 자바스크립트 도전기
[하코사 세미나] 비전공자의 자바스크립트 도전기 [하코사 세미나] 비전공자의 자바스크립트 도전기
[하코사 세미나] 비전공자의 자바스크립트 도전기
 
PHP로 Slack Bot 만들기
PHP로 Slack Bot 만들기PHP로 Slack Bot 만들기
PHP로 Slack Bot 만들기
 
M5 1 1
M5 1 1M5 1 1
M5 1 1
 
0.javascript기본(~3일차내)
0.javascript기본(~3일차내)0.javascript기본(~3일차내)
0.javascript기본(~3일차내)
 
Light Tutorial Python
Light Tutorial PythonLight Tutorial Python
Light Tutorial Python
 
Anatomy of Realm
Anatomy of RealmAnatomy of Realm
Anatomy of Realm
 
외계어 스터디 3/5 function and object
외계어 스터디 3/5   function and object외계어 스터디 3/5   function and object
외계어 스터디 3/5 function and object
 
파이썬 함수 이해하기
파이썬 함수 이해하기 파이썬 함수 이해하기
파이썬 함수 이해하기
 
Python을 활용한 챗봇 서비스 개발 1일차
Python을 활용한 챗봇 서비스 개발 1일차Python을 활용한 챗봇 서비스 개발 1일차
Python을 활용한 챗봇 서비스 개발 1일차
 
이것이 자바다 Chap.11 기본 API 클래스(java)(KOR)
이것이 자바다 Chap.11 기본 API 클래스(java)(KOR)이것이 자바다 Chap.11 기본 API 클래스(java)(KOR)
이것이 자바다 Chap.11 기본 API 클래스(java)(KOR)
 
스칼라와 스파크 영혼의 듀오
스칼라와 스파크 영혼의 듀오스칼라와 스파크 영혼의 듀오
스칼라와 스파크 영혼의 듀오
 
I phone 2 release
I phone 2 releaseI phone 2 release
I phone 2 release
 
엄준일 04일차 HTML/Javascript 교육
엄준일 04일차 HTML/Javascript 교육엄준일 04일차 HTML/Javascript 교육
엄준일 04일차 HTML/Javascript 교육
 

You don't know JS / this / chapter 1-2