🎉 함수도 객체다
자바스크립트에서는 함수도 객체다.
객체는? 프로퍼티들을 가질 수 있다.
function multi(x, y){
return x * y;
}
multi.result = multi(2, 1);
multi.status = true;
함수를 생성할 때 함수 코드는 [[Code]] 라는 내부 프로퍼티에 자동으로 저장된다.
🎉 함수는 값이다
자바스크립트에서 함수는 일급 객체이다.
아래의 특징이 있으면 일급 객체이다.
- 리터럴에 의해서 생성
- 변수나 배열의 요소, 객체의 프로퍼티 등에 할당 가능
- 함수의 인자로 전달 가능
- 함수의 리턴값으로 리턴 가능
- 동적으로 프로퍼티를 생성 및 할당 가능
변수나 프로퍼티의 값으로 할당
var ten = function () { return 10; };
console.log(ten()); // print >> 10
var object = {};
object.first = function () { return 200; };
console.log(object.first()); // print >> 200
함수 인자로 전달
var first = function(func) {
func(); // 인자로 받은 func 함수 호출
};
first(function() {
console.log("method argument Function");
});
// print >> method argument Function
익명 함수를 func 인자로 넘겼다.
리턴 값으로 활용
var first = function() {
return function () {
console.log("Function can be used return value");
};
};
var callFunction = first();
callFunction(); // print >> Function can be used return value
🎉 함수 객체의 기본 프로퍼티
자바스크립트에서 함수는 객체다.
일반 객체와는 다르게 추가로 함수 객체만의 표준 프로퍼티가 정의되어 있다.
_proto_ 프로퍼티
- 함수 객체의 프로토타입 객체는 Function.prototype 객체이다.
- Function.prototype 역시 함수 객체다.
- Function.prototype 객체의 부모는 모든 객체의 조상격인 Object.prototype 객체이다.
length 프로퍼티
- 함수가 정상적으로 실행될 때, 정의된 인자의 수를 나타낸다. ex) function A(x, y)일 경우 A.length는 2이다.
- length는 ECMAScript에서 정한 모든 함수가 가져야하는 표준 프로퍼티이다.
prototype 프로퍼티
- 모든 객체의 부모를 나타내는 내부 프로퍼티인 [[Prototype]] 과는 다르다.
- 함수 자신과 연결된 constructor 프로퍼티 하나만 있는 프로토타입 객체를 생성하고, prototype과 constructor 프로퍼티는 서로를 참조한다.
📖 출처
송형주, 고현준 지음, 『인사이드 자바스크립트』, 한빛미디어(2014)
'개발 > JavaScript' 카테고리의 다른 글
JavaScript] 자바스크립트 뿌시기 (함수의 다양한 형태) (0) | 2021.02.02 |
---|---|
JavaScript] 자바스크립트 뿌시기 (함수 생성) (0) | 2021.01.17 |
JavaScript] 자바스크립트 뿌시기 (기본 타입과 표준 메서드, 연산자) (0) | 2021.01.07 |
JavaScript] 자바스크립트 뿌시기 (배열) (0) | 2021.01.07 |
JavaScript] 자바스크립트 뿌시기 (프로토타입) (0) | 2021.01.05 |