2_javascript_(함수,클로저,객체,내장객체)
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()를 정지시키는 함수