1. 자바스크립트에서는 함수도 객체다.
function add(x, y){
return x + y;
}
add.result = add(3, 2);
add. status = 'OK'
console.log(add.result); // 출력값 : 5
console.log(add.status); // 출력값 : 'OK'
2. 함수는 값이다.
- 리터럴에 의해 생성
- 변수나 배열의 요소, 객체 프로퍼티 등에 할당 가능
- 함수의 인자로 전달 가능
- 함수의 리턴값으로 리턴 가능
- 동적으로 프로퍼티를 생성 및 할당 가능
위의 기능이 모두 가능한 객체를 일급 객체(First Class Object)라고 부른다.
이러한 일급객체의 특징으로 함수형 프로그래밍이 가능하다.
3. 변수나 프로퍼티의 값으로 할당 가능하다.
//변수에 함수 할당
var foo = 100;
var bar = function(){return 100;}
console.log(bar()); // 출력값 : 100
//property에 함수 할당
var obj = {};
obj.baz = function(){return 200;}
console.log(obj.baz()); // 출력값 : 200
4. 함수 인자로 전달 가능하다.
//함수 표현식으로 foo()함수 생성
var foo = function(func){
func(); // 인자로 받은 func 함수 호출
};
//foo() 함수 실행
foo(function(){
console.log('Function can be used as a argument.');
});
// 출력 결과 : Function can be used as a argument.');
5. 리턴값으로 활용 가능하다.
var foo = function(){
return function(){
console.log('this function is the return value.');
};
};
var bar = foo();
bar();
//출력 결과 : this function is the return value.
6. 프로퍼티
- length : 함수의 인자 수
- prototype 프로퍼티
· constructor 프로퍼티 하나만 있는 객체를 가리킨다.
· 함수를 생성할 때 함수 자신과 연결된 프로토타입 객체를 동시에 생성하며,
함수 객체와 프로토타입 객체는 서로를 참조한다.
7. 프로토 타입
- [[Prototype]] == __proto__ : 모든 자바스크립트 객체가 가진 프로토타입
- Function.prototype == 함수객체 : 모든 함수들의 부모 역할을 하는 프로토타입 객체이며
부모는 Object.prototype 객체
'Language > Java Script' 카테고리의 다른 글
자바스크립트 함수 호출과 this (0) | 2020.02.23 |
---|---|
자바스크립트 함수 형태 (0) | 2020.02.23 |
자바스크립트 함수 선언 (0) | 2020.02.23 |
자바스크립트 연산자 특이사항 (0) | 2020.02.23 |
자바스크립트 primitive type의 표준 메소드 (0) | 2020.02.23 |