sitelink1 | |
---|---|
sitelink2 | |
sitelink3 | |
sitelink4 | http://1 |
extra_vars4 | ko |
extra_vars5 | http://zoonoo.egloos.com/4203424 |
extra_vars6 | sitelink1 |
1. Function이란?
Function은 String, Array와 마찬가지로 자바스크립트의 내장객체(함수객체라 한다)이며 따라서 아래의 표현식은 모두 동일하다.
(function 기본 기능만을 본다면 동일하지만 각각 역할은 틀리다)
function A() {...}
var A = function() {...}
var A = new Function('...');
2. Function과 객체.
Function은 new 와 함께 사용하면 객체에 대한 생성자로 활용 할 수 있다.
(new 키워드를 통해 function 의 기본 기능을 확장한 클래스를 생성 가능한 것이다.
function 블럭은 클래스와 객체로 구성되기 위한 구조(맴버변수와 함수를 가질 수 있는 영역)를 가지고 있기 때문이다.)
function A() {...}
var o = A(); -- A함수를 호출 - o는 A의 반환값.
var o = new A(); -- A함수를 생성자로 사용하여 객체 생성 - o는 A를 통해 생성된 객체.
3. Function과 this
Function 내부에서는 this의 키워드를 사용 할 수 있으며 this의 값은 Function을 함수로 사용하거나 객체의 생성자로 사용할 때 값이 달라진다.
function A() {
alert(this.location);
}
A(); -- 함수로 사용할때 - this는 window 객체로 할당되며 따라서 window.location (브라우저의 주소값)이 출력됨.
new A(); -- 생성자로 활용할때 - this는 빈 Object로 할당되고 빈 Object에는 location프로퍼티가 없으므로 undefined가 출력.
4. Function와 return
함수를 생성자로 활용 할 때는 return의 사용에 주의해야 한다. 아래의 코드는 둘 다 결과값이 동일하다.
(new 키워드는 자바스크립트가 OOP를 지원하기 위한 메커니즘이 숨어 있으며 메모리 할당시 prototype과 construct 와
유기적인 관계를 가지게 된다. new 와 메모리 할당에 대해 좀더 세부적으로 학습할 필요가 있다.)
Function은 String, Array와 마찬가지로 자바스크립트의 내장객체(함수객체라 한다)이며 따라서 아래의 표현식은 모두 동일하다.
(function 기본 기능만을 본다면 동일하지만 각각 역할은 틀리다)
function A() {...}
var A = function() {...}
var A = new Function('...');
2. Function과 객체.
Function은 new 와 함께 사용하면 객체에 대한 생성자로 활용 할 수 있다.
(new 키워드를 통해 function 의 기본 기능을 확장한 클래스를 생성 가능한 것이다.
function 블럭은 클래스와 객체로 구성되기 위한 구조(맴버변수와 함수를 가질 수 있는 영역)를 가지고 있기 때문이다.)
function A() {...}
var o = A(); -- A함수를 호출 - o는 A의 반환값.
var o = new A(); -- A함수를 생성자로 사용하여 객체 생성 - o는 A를 통해 생성된 객체.
3. Function과 this
Function 내부에서는 this의 키워드를 사용 할 수 있으며 this의 값은 Function을 함수로 사용하거나 객체의 생성자로 사용할 때 값이 달라진다.
function A() {
alert(this.location);
}
A(); -- 함수로 사용할때 - this는 window 객체로 할당되며 따라서 window.location (브라우저의 주소값)이 출력됨.
new A(); -- 생성자로 활용할때 - this는 빈 Object로 할당되고 빈 Object에는 location프로퍼티가 없으므로 undefined가 출력.
4. Function와 return
함수를 생성자로 활용 할 때는 return의 사용에 주의해야 한다. 아래의 코드는 둘 다 결과값이 동일하다.
(new 키워드는 자바스크립트가 OOP를 지원하기 위한 메커니즘이 숨어 있으며 메모리 할당시 prototype과 construct 와
유기적인 관계를 가지게 된다. new 와 메모리 할당에 대해 좀더 세부적으로 학습할 필요가 있다.)
function A() {
this.name = 'a';
return 'x';
}
var o = A();
-- 1. A함수 호출.
-- 2. this는 window로 할당
-- 3. window.name 은 'a' 할당
-- 4. 'x' 반환
-- 5. o는 'x'가 됨.
var o = new A();
-- 1. new에 의해 빈 Object생성 하고 A를 생성자로 호출
-- 2. this는 빈 Object로 할당
-- 3. 빈 Object의 name프로퍼티에 'a'할당
-- 4. 'x'반환
-- 5. o는 'x'가 됨. (생성된 객체가 아님!)
댓글 0
번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
---|---|---|---|---|
46 | Object 와 Prototype | 황제낙엽 | 2008.08.08 | 292 |
45 | [펌]자바스크립트에서 객체 생성 방법 | 황제낙엽 | 2008.08.07 | 313 |
44 | [펌]JavaScript Class 만들기 | 황제낙엽 | 2008.08.07 | 325 |
» | [펌]Function과 객체, this 키워드의 관계 | 황제낙엽 | 2008.08.07 | 284 |
42 | 자바스크립트의 데이터 타입과 변수 | 황제낙엽 | 2008.08.06 | 469 |
41 |
[펌]객체지향 자바스크립트
![]() | 황제낙엽 | 2008.08.06 | 296 |
40 | [펌]사용자 정의 클래스 생성 및 common library 의 개념. | 황제낙엽 | 2008.08.06 | 261 |
39 | 라이노 (Rhino) 관련 링크 모음 | 황제낙엽 | 2008.07.21 | 381 |
38 | Rhino scopes and contexts 에 대한 문서 | 황제낙엽 | 2008.07.18 | 389 |
37 |
동적인 언어를 동적으로 호출하기
![]() | 황제낙엽 | 2008.07.14 | 271 |
36 | How to use Rhino to script Java classes. | 황제낙엽 | 2008.07.14 | 464 |
35 | Java 버전의 JavaScript 엔진 라이노 (Rhino) | 황제낙엽 | 2008.07.14 | 456 |
34 |
SpiderMonkey 를 이용한 개발 일기
![]() | 황제낙엽 | 2008.07.14 | 263 |
33 | JSAPI User Guide | 황제낙엽 | 2008.07.14 | 408 |
32 | State of ECMAScript 4 ('07 12) | 황제낙엽 | 2008.07.14 | 404 |
31 | SpiderMonkey와 Tamarin | 황제낙엽 | 2008.07.14 | 401 |
30 | URL 리다이렉트 (redirect) | 황제낙엽 | 2008.04.18 | 407 |
29 | 감추기, 보이기 화면 예제 | 황제낙엽 | 2008.04.14 | 488 |
28 |
Date객체 - 날짜구하기
![]() | 황제낙엽 | 2008.02.19 | 316 |
27 | JavaScript TDD by 강규영 | 황제낙엽 | 2007.11.26 | 467 |