Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- sentry
- 공헌감
- 참조 계수
- node
- CSS
- 비메모리 자원
- 아웃풋법칙
- 쿠버네티스
- 뉴 컨피던스
- HTML
- java
- 히든 스토리
- Container
- 수부타이
- 월칙
- try width resources
- 부자의그릇
- ESG
- 모두가 기다리는 사람
- apache kafka
- 칭기즈칸의 위대한 장군 수부타이
- colllection
- docker
- 과제의 분리
- kubernetes
- 레퍼런스 복사
- Infresh
- 도파민형 인간
- 이펙티브 자바
- try-with-resources
Archives
- Today
- Total
Hi
(javascript) 함수 객체 : 함수도 객체다 본문
함수 객체 : 함수도 객체다
자바스크립트에서는 함수도 객체다
// 함수 선언 방식으로 add()함수 정의
function add(x, y) {
return x + y;
}
// add() 함수 객체에 result, status 프로퍼티 추가
add.result = add(3, 2);
add.status = 'OK';
console.log(add.result); // 5
console.log(add.sattus); // 'OK'
add()함수 객체는 [[Code]] 프로퍼티, result와 status 프로퍼티를 가진다.
자바스크립트에서 함수는 값으로 취급된다
자바스크립트에서 함수는 객체다.
함수도 일반 객체처럼 취급 될수 있다.
- 리터럴에 의해 생성
- 변수나 배열의 요소, 객체의 프로퍼티 등에 할당 가능
- 함수의 인자로 전달 가능
- 함수의 리턴값으로 리턴 가능
- 동적으로 프로퍼티를 생성 및 할당 가능
함수는 일급객체 -> 앞에서 나열한 기능이 모두 가능한 객체
일급객체의 특성 : 함수형 프로그래밍이 가능
함수가 일급 객체이며 이는 곧 함수가 일반 객체처럼 값(value)으로 취급된다.
함수를 변수나 객체, 배열 등에 값으로도 저장할 수 있으며, 다른 함수의 인자로 전달한다거나 함수의 리턴값으로 사용가능하다.
변수나 프로퍼티의 값으로 할당
// 변수에 함수 할당
var foo = 100;
var bar = function() { return 100; };
console.log(bar()); // 100
// 프로퍼티에 함수 할당
var obj = {};
obj.baz = function() { return 200; }
console.log(obj.baz()); // 200
함수 인자로 전달
// 함수 표현식으로 foo() 함수 생성
var foo = function(func) {
func(); // 인자로 받은 func() 함수 호출
};
// foo() 함수 실행
foo(function() {
console.log('Function can be used as the argument.');
});
[출력결과]
Function can be used as the argument.
리턴값으로 활용
// 함수를 리턴하는 foo() 함수 정의
var foo = function() {
return function() {
console.log('this function is the return value.')
};
};
var bar = foo();
bar();
[출력 결과]
this function is the return value.
함수 객체의 기본 프로퍼티
함수 객체만의 표준 프로퍼티가 정의되어 있다.
ex) auguments, caller, length
name 프로퍼티 : 함수의 이름
caller 프로퍼티 : 자신을 호출한 함수
argument 프로퍼티 : 함수를 호출할 때 전달된 인자값
__proto__ 프로퍼티 : [[Prototype]] 과 같은 개념.
함수 객체의 부모 열할을 하는 프로토타입 객체 -> Function.prototype 객체
Function.prototype 객체의 부모는 Object.prototype 객체
length 프로퍼티
모든 함수가 가져야 하는 표준 프로퍼티
function func0() {
}
function func1(x) {
return x;
}
function func2(x, y) {
return x + y;
}
function func3(x, y, z) {
return x + y + z;
}
console.log(func0.length); // 0
console.log(func1.length); // 1
console.log(func2.length); // 2
console.log(func3.length); // 3
함수 객체의 length 프로퍼티 : 함수를 작성할 때 정의한 인자 개수
prototype 프로퍼티
// MyFunction() 함수 정의
function myFunction() {
return true;
}
console.dir(myFunction.prototype);
console.dir(myFunction.prototype.constructor);
myFunction() (함수 객체)에는 prototype 프로퍼티를 가지고 있고,
myFunction().prototype (프로토타입 객체)에는 constructor 프로퍼티가 있어 이 constructor 프로퍼티가 자신과 연결된 함수를 가리킨다.
이렇듯 함수 객체와 프로토타입 객체는 서로 밀접하게 연결돼 있다.
'WEB(웹)' 카테고리의 다른 글
(javascript) 캡슐화 (0) | 2018.06.25 |
---|---|
(javascript) 함수의 다양한 형태 (0) | 2018.06.25 |
(javascript) isNaN() (0) | 2018.06.22 |
(javascript) window 객체 (0) | 2018.06.22 |
브라우저 객체 모델 (0) | 2018.06.22 |