study/Javascript

2_javascript_(함수,클로저,객체,내장객체)

스파이크12 2019. 12. 24. 08:22

10. 함수2

@매개변수로 함수 타입 전달

자바스크립트에서는 함수(function)도 하나의 자료형이기 때문에 매개변수로 전달이 가능하다

@익명함수를 매개변수로 전달

익명함수 사용 이유

- 함수가 1회성으로 사용되는 경우에 코드길이 감소효과

- 익명함수가 매개변수, 반환값으로 사용되는 경우 비동기적 효과를 나타냄

@익명 함수를 리턴하는 함수

리턴받은 익명함수를 호출하는 방법 : 함수명()();

11. 클로저

클로저란?

-특정함수(testFn())의 지역변수(testFnVal)가 내부함수(innerFn())에 포함되어 있고,

특정 함수가(testFn())이 내부 함수(innerFn())를 리턴한 경우 리턴된 내부함수(innerFn())를 클로저(Closer)라고함

-지역 변수의 scope(범위, 생존범위)는 선언된 함수 내부로 함수가 실행될 때 생성되고, 함수가 종료될 때 사라진다

-하지만 클로저(Closer)를 이용하면 위 규칙을 무시하고 사라진 지역변수에 접근이 가능해짐

그리고 이러한 변수를 자유변수(free variable)이라고함

12. 객체1

@객체 선언 및 속성 호출

자바스크립트 객체는 key:value(속성) 형태로 이루어짐

객체는 {}(중괄호, 객체리터럴) 또는 new를 이용해 생성 가능하고, 속성에는 모든 자료형이 올 수 있다.

@객체의 메소드 속성

객체의 속성 중 타입이 함수(function)인 속성을 메소드라고함

★ 객체 내에서 객체 자신의 속성을 호출할 경우 반드시 this. 를 사용해야 한다(자바와 반대)

#다른 프로그래밍 언어 개발자들이 가장 많이하는 실수

반드시 객체 내부 속성 접근시 this. 을 명시적으로 사용

@ 객체 속성 반복 접근

for in 문 : 객체의 속성에 순차적으로 접근

for(var key in 객체명) {
	document.getElementById("").innerHTML
    	+= key + " : " + 객체명[key] + "<br>";
}

@객체에 사용할 수 있는 키워드 (in, with)

- in : 객체 내부에 해당 속성이 있는지 확인하는 키워드

('속성명' in 객체명)

- with : 객체 호출 시 객체명을 생략시켜 코드를 감소시키는 키워드

with(객체명) {소스코드};

@ 객체의 속성 추가 및 제거

처음 객체 생성 이후 속성을 추가/제거하는 것을 '동적으로 속성을 추가/제거 한다'라고 표현함

-추가

객체명.속성명 = "속성값"

-제거

delete(객체명.속성명);

13. 객체2

@생성자 함수

-객체를 생성하는 함수

-일반적인 함수와 다르게 호출 시 new 키워드를 사용하며 호출결과로 객체를 생성함

-생성자 함수를 사용하면 동일한 속성과 메소드를 가진 객체를 다수 만들 수 있음

@instanceof 키워드

해당 객체가 어떤 생성자함수로 생성이 되었는지 검사

15. 내장객체2

@window 객체

window객체는 자바스크립트의 모든 객체중 최상위 객체이며 BOM, DOM이라는 것으로 나뉨

BOM(Browser Object Model) :

location / navigator / history / screen

DOM(Document Object Model) : 

- document 객체

window 객체

브라우저 창에 대한 설정을 하는 객체

@window 객체의 timer 관련 메소드

-setTimeout(이벤트핸들러, 시간(밀리세컨드초))

일정 시간 후 지정된 내용을 1회만 실행

-setInterval(이벤트핸들러, 시간(밀리세컨드초))

특정 내용을 일정 주기로 반복하며 실행

-clearInterval()

수행중인 setInterval()를 정지시키는 함수