[하코사 세미나] 비전공자의 자바스크립트 도전기

54
비비비비비 비비비비비비 비비비

Upload: -

Post on 07-Apr-2017

435 views

Category:

Education


2 download

TRANSCRIPT

Page 1: [하코사 세미나] 비전공자의 자바스크립트 도전기

비전공자의 자바스크립트 도전기

Page 2: [하코사 세미나] 비전공자의 자바스크립트 도전기

Freelancer / 아프리카 TV BJ / Brunch Writer기발자

Page 3: [하코사 세미나] 비전공자의 자바스크립트 도전기

2014 년 10 월개발 공부 시작

Page 4: [하코사 세미나] 비전공자의 자바스크립트 도전기

HTMLCSS

JavaScriptSwift

Python

BootstrapAngularReactMEANIonic

Page 5: [하코사 세미나] 비전공자의 자바스크립트 도전기

WhyJavaScript

Page 6: [하코사 세미나] 비전공자의 자바스크립트 도전기

Versatile

Page 7: [하코사 세미나] 비전공자의 자바스크립트 도전기
Page 8: [하코사 세미나] 비전공자의 자바스크립트 도전기

실행 컨텍스트

클로저

호이스팅

객체지향

프로토타입클래스

스코프메서드

컴파일

콜백재귀함수디버깅

Page 9: [하코사 세미나] 비전공자의 자바스크립트 도전기

생활코딩 Udemy Treehouse W3School …

여러 채널을 통해 공부했지만…

Page 10: [하코사 세미나] 비전공자의 자바스크립트 도전기

Too ManyTo Fail

Page 11: [하코사 세미나] 비전공자의 자바스크립트 도전기

K.O

Page 12: [하코사 세미나] 비전공자의 자바스크립트 도전기

Image + Structure

Page 13: [하코사 세미나] 비전공자의 자바스크립트 도전기

+ =1 1 2

Page 14: [하코사 세미나] 비전공자의 자바스크립트 도전기

+ =

+ =1 1 2

Page 15: [하코사 세미나] 비전공자의 자바스크립트 도전기

값과 연관된 이름으로서 , 이를 통해 데이터를 저장하고 조작할 수 있는 것

Page 16: [하코사 세미나] 비전공자의 자바스크립트 도전기

var 값과 연관된 이름으로서 ,

이를 통해 데이터를 저장하고 조작할 수 있는 것

Page 17: [하코사 세미나] 비전공자의 자바스크립트 도전기

=var name “inkwon”

Page 18: [하코사 세미나] 비전공자의 자바스크립트 도전기

=var name “inkwon”

“inkwon”name

Page 19: [하코사 세미나] 비전공자의 자바스크립트 도전기

JavaScript 에서 기본적인 빌딩 블록 중의 하나로 작업을 수행하거나 값을 계산하는

문장의 집합과 같은 자바스트립트 절차

Page 20: [하코사 세미나] 비전공자의 자바스크립트 도전기

JavaScript 에서 기본적인 빌딩 블록 중의 하나로 작업을 수행하거나 값을 계산하는

문장의 집합과 같은 자바스트립트 절차

function

Page 21: [하코사 세미나] 비전공자의 자바스크립트 도전기

function coffeeMachine(coffee beans) { ……}coffeeMachine(“ 브라질 산토스” )

Page 22: [하코사 세미나] 비전공자의 자바스크립트 도전기

function coffeeMachine(coffee beans) { ……}

coffeeMachine(“ 브라질 산토스” )

Page 23: [하코사 세미나] 비전공자의 자바스크립트 도전기

function coffeeMachine(coffee beans) { ……}

coffeeMachine(“ 브라질 산토스” )

Parameter

Arguments

Page 24: [하코사 세미나] 비전공자의 자바스크립트 도전기

function coffeeMachine(coffee beans) { return 브라질 산토스 원두로 만들어진 커피}

coffeeMachine(“ 브라질 산토스” )

Page 25: [하코사 세미나] 비전공자의 자바스크립트 도전기

스크립트가 실행되면서 생성되는 것으로 생성된 순서대로 Stack 메모리에 삽입되며 언제나 1 개의 Variable Environment,

1 개의 Lexical Environment, 그리고 1 개의 This Binding 속성으로 구성되어 있는 것

Page 26: [하코사 세미나] 비전공자의 자바스크립트 도전기

Execution Context

스크립트가 실행되면서 생성되는 것으로 생성된 순서대로 Stack 메모리에 삽입되며 언제나 1 개의 Variable Environment,

1 개의 Lexical Environment, 그리고 1 개의 This Binding 속성으로 구성되어 있는 것

Page 27: [하코사 세미나] 비전공자의 자바스크립트 도전기

var korName = “Inkwon”전역에서의 실행 컨텍스트

Page 28: [하코사 세미나] 비전공자의 자바스크립트 도전기

var korName = “Inkwon”

전역 실행 컨텍스트전역 변수 객체

scope ( 스코프 체인 )

korName : undefined -> Inkwon

this

Page 29: [하코사 세미나] 비전공자의 자바스크립트 도전기

함수 호출 시 실행 컨텍스트var korName = “Inkwon”

function test() { var korName = “Lee”}

test();

Page 30: [하코사 세미나] 비전공자의 자바스크립트 도전기

var korName = “Inkwon”

function test() { var korName = “Lee”}

test();

전역 실행 컨텍스트전역 변수 객체

scope ( 스코프 체인 )

korName

test

this

Page 31: [하코사 세미나] 비전공자의 자바스크립트 도전기

test 함수 실행 시 test 실행 컨텍스트 생성

전역 실행 컨텍스트전역 변수 객체

scope ( 스코프 체인 )

korName

test

this

var korName = “Inkwon”

function test() { var korName = “Lee”}

test();

Page 32: [하코사 세미나] 비전공자의 자바스크립트 도전기

전역 실행 컨텍스트

var korName = “Inkwon”

function test() { var korName = “Lee”}

test();

test 실행 컨텍스트test 변수 객체

scope ( 스코프 체인 )

korName

this

Page 33: [하코사 세미나] 비전공자의 자바스크립트 도전기

전역 실행 컨텍스트

test2 실행 컨텍스트test2 변수 객체

scope ( 스코프 체인 )

this

test 실행 컨텍스트

var korName = “Inkwon”

function test() { var korName = “Lee” function test2() { return korName } test2();}

test();

Page 34: [하코사 세미나] 비전공자의 자바스크립트 도전기

var korName = “Inkwon”

function test() { function test2() { return korName } return test2();}

console.log(test());

전역 실행 컨텍스트

test2 실행 컨텍스트test 실행 컨텍스트

스코프 체인

Page 35: [하코사 세미나] 비전공자의 자바스크립트 도전기

var korName = "inkwon";

function test1() { return korName; }

function test2() { var korName = "Lee"; return test1(); }

console.log(test2());

Page 36: [하코사 세미나] 비전공자의 자바스크립트 도전기

전역 실행 컨텍스트전역 변수 객체

scope ( 스코프 체인 )

korName

test1

test2

var korName = "inkwon";

function test1() { return korName; }

function test2() { var korName = "Lee"; return test1(); }

console.log(test2());

this

Page 37: [하코사 세미나] 비전공자의 자바스크립트 도전기

var korName = "inkwon";

function test1() { return korName; }

function test2() { var korName = "Lee"; return test1(); }

console.log(test2());

전역 실행 컨텍스트

test2 실행 컨텍스트test2 변수 객체

scope ( 스코프 체인 )

korName

this

Page 38: [하코사 세미나] 비전공자의 자바스크립트 도전기

var korName = "inkwon";

function test1() { return korName; }

function test2() { var korName = "Lee"; return test1(); }

console.log(test2());

전역 실행 컨텍스트

test1 실행 컨텍스트test1 변수 객체

scope ( 스코프 체인 )

this

test2 실행 컨텍스트

Page 39: [하코사 세미나] 비전공자의 자바스크립트 도전기

var korName = "inkwon";

function test1() { return korName; }

function test2() { var korName = "Lee"; return test1(); }

console.log(test2());

전역 실행 컨텍스트

test1 실행 컨텍스트test2 실행 컨텍스트

Page 40: [하코사 세미나] 비전공자의 자바스크립트 도전기

전역 실행 컨텍스트

test1 실행 컨텍스트전역 실행 컨텍스트

test2 실행 컨텍스트

var korName = "inkwon";

function test1() { return korName; }

function test2() { var korName = "Lee"; return test1(); }

console.log(test2());

Page 41: [하코사 세미나] 비전공자의 자바스크립트 도전기

JavaScript 에서 prototype 은 함수의 속성이며 생성자 함수에서 만든 개체의 속성입니다 . 함수의 프로토타입은 개체입니다 .

이는 함수가 생성자로 사용될 때 주로 사용됩니다 .

Prototype

Page 42: [하코사 세미나] 비전공자의 자바스크립트 도전기

var add = function(x, y) { return x + y;}

Page 43: [하코사 세미나] 비전공자의 자바스크립트 도전기

var add = function(x, y) { return x + y;}

console.dir(add.prototype);console.dir(add.prototype.constructor);

add 함수 객체 add.prototype( add 프로토타입 객체 )

prototype 프로퍼티constructor 프로퍼티

Page 44: [하코사 세미나] 비전공자의 자바스크립트 도전기

객체지향 프로그래밍 (OOP) 에서 클래스는 특정 종류의 객체내에 있는 변수와 메서드를 정의하는 일종의 틀 , 즉 템플릿이다 . 따라서 , 객체는 클래스로

규정된 인스턴스로서 , 변수 대신 실제값을 가진다 .

Class

Page 45: [하코사 세미나] 비전공자의 자바스크립트 도전기

function Person(name) { this.name = name; this.getName = function() {…} this.setName = function(reName) {…}}

Page 46: [하코사 세미나] 비전공자의 자바스크립트 도전기

var korName = new Person(“inkweon”);

var usName = new Person(“Christy”);

function Person(name) { this.name = name; this.getName = function() {…} this.setName = function(reName) {…}}

Page 47: [하코사 세미나] 비전공자의 자바스크립트 도전기

Person

name

getName

setName

Page 48: [하코사 세미나] 비전공자의 자바스크립트 도전기

Person

name

getName

setName

korName

name

getName

setName

Page 49: [하코사 세미나] 비전공자의 자바스크립트 도전기

Person

name

getName

setName

korName

name

getName

setName

usName

name

getName

setName

Page 50: [하코사 세미나] 비전공자의 자바스크립트 도전기

Person

name

getName

setName

korName

name

getName

setName

usName

name

getName

setName

불필요한 메모리 공간을 차지

Page 51: [하코사 세미나] 비전공자의 자바스크립트 도전기

Person.prototype.getName = function() {…}

Person.prototype.setName = function(reName) {…}

var korName = new Person(“inkweon”);

var usName = new Person(“Christy”);

function Person(name) { this.name = name;}

Page 52: [하코사 세미나] 비전공자의 자바스크립트 도전기

Person

name

getName

setName

Person.prototype

korName

name

usName

name

Page 53: [하코사 세미나] 비전공자의 자바스크립트 도전기

남은 JavaScript 주요 개념객체지향 (OOP), 재귀함수 , 클로저 등

Page 54: [하코사 세미나] 비전공자의 자바스크립트 도전기

감사합니다 .