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
번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
---|---|---|---|---|
57 | Javascript delete | 황제낙엽 | 2012.06.11 | 20 |
56 | 익명함수의 사용 | 황제낙엽 | 2008.10.14 | 20 |
55 | [펌]객체지향 자바스크립트 | 황제낙엽 | 2008.08.06 | 20 |
54 | XP 에서 input type=text 와 input type=password 의 사이즈가 틀리게 보일때 | 황제낙엽 | 2004.08.04 | 20 |
53 | Early return, early exit - 스크립트 가독성 개선 팁 | 황제낙엽 | 2021.03.07 | 19 |
» | [펌]Function과 객체, this 키워드의 관계 | 황제낙엽 | 2008.08.07 | 19 |
51 | 숫자값으로의 변환 형태 | 황제낙엽 | 2009.09.02 | 18 |
50 | 이미지 로드 코드 | 황제낙엽 | 2009.06.27 | 18 |
49 | [펌] TAEYO.NET - Js OOP - 나만의 프레임워크 만들기 | 황제낙엽 | 2009.04.02 | 18 |
48 | [펌]JavaScript Class 만들기 | 황제낙엽 | 2008.08.07 | 18 |
47 | SpiderMonkey 를 이용한 개발 일기 | 황제낙엽 | 2008.07.14 | 18 |
46 | 슬라이딩 메뉴 | 황제낙엽 | 2005.12.02 | 18 |
45 | 풍선 도움말 | 황제낙엽 | 2005.11.24 | 18 |
44 | 브라우저의 스크롤을 따라다니는 레이어 두번째 | 황제낙엽 | 2002.12.20 | 18 |
43 | [펌] 아사페릴의 사생활 - Javascript의 클래스에 관한 이야기 | 황제낙엽 | 2009.04.02 | 17 |
42 | Boolean 데이터 타입 | 황제낙엽 | 2009.09.02 | 16 |
41 | [펌] TAEYO.NET - Js OOP - 사용자 정의 객체. 그리고 상속과 재사용 | 황제낙엽 | 2009.04.02 | 16 |
40 | 마우스 오버시 살짝 뒤로 물러나는 듯한 링크 -_-;; | 황제낙엽 | 2003.01.04 | 16 |
39 | 자바스크립트 쿠키 | 황제낙엽 | 2009.06.11 | 15 |
38 | [펌] 아사페릴의 사생활 - __proto__ 와 prototype에 대해.. | 황제낙엽 | 2009.04.02 | 15 |