JavaScript/함수

함수 객체의 기본 프로퍼티

Eugenius 2021. 2. 8. 23:21

함수는 객체로 취급되므로 일반적인 객체의 기능에 호출됐을 때 정의된 코드를 실행하는 기능을 가지고 있다. 

일반 객체와는 다르게 추가로 함수 객체만의 표준 프로퍼티가 정의되어 있다. 

 

function add(x,y){
	return x+y;
}

console.dir(add);

 

console.dir(add)

결과를 살펴보면 add()함수는 arguments, caller, length 등과 같은 프로퍼티가 기본적으로 생성된 것을 알수 있다.

이러한 프로퍼티들이 함수를 생성할 때 포함되는 표준 프로퍼티다.

 

- name 프로퍼티 : 함수의 이름을 나타낸다. 이름이 없는 익명 함수라면 name 프로퍼티는 빈 문자열이 된다.

- caller 프로퍼티 : 자신을 호출한 함수를 나타낸다. 

- arguments 프로퍼티 : 함수를 호출할 때 전달된 인자값을 나타낸다. 위에선 호출된 상태가 아니므로 null 값이 출력됐다. 

     arguments 객체는 함수를 호출할 때 전달 인자값의 정보를 제공해준다. 

 

function add(a,b){
	console.dir(arguments);
    return a+b;
}

console.log(add(1,2));

함수를 호출할 때 넘긴 인자들이 배열 형태로 저장된다.

- _proto_ 프로퍼티 : 객체는 자신의 프로토타입을 가리키는 [[prototype]]라는 내부 프로퍼티를 가지는데, [[prototype]]가 _proto_ 프로퍼티로 구현된 것이다.

 

자바스크립트에서는 함수를 생성할 때, 함수 자신과 연결된 프로토타입 객체를 동시에 생성하며, 각각 prototype과 constructor라는 프로퍼티로 서로를 참조한다. 

 

함수의 prototype 프로퍼티가 가리키는 프로토타입 객체는 따로 네이밍하지 않고, 자신과 연결된 함수의 prototype 프로퍼티 값을 그대로 이용한다.  add() 함수의 프로토타입 객체는 add.prototype이 된다. 

 

/*생성됨과 동시에 myFunction()함수의 prototype 프로퍼티에는 이 함수와 연결된 프로토타입 객체가 생성된다*/
function myFunction(){
	return true;
}

/* myFunction() 함수의 프로토타입 객체를 의미한다. */
console.dir(myFunction.prototype);

/* 프로토타입 객체와 매핑된 함수를 알수 있다. */
console.dir(myFunction.prototype.constructor);

 

'JavaScript > 함수' 카테고리의 다른 글

[함수의 특성] 함수의 객체적 특성  (0) 2021.02.03
자바스크립트의 함수의 생성  (0) 2021.02.02