자바스크립트 함수 3


"자바스크립트" 함수는 생성자를 나타내기도 합니다.
 


  1. function x(){
  2.  
  3.     this.x = 1;
  4.     this.y = 2;
  5. }
  6.  
  7. alert(typeof new x()); // object
  8. alert(new x().x); // 1
  9. alert(new x().y); // 2

이전 포스트인 "자바스크립트 함수 2" 내용과 같이 자바스크립트 에서는 new 연산자와 맴버가
설계된 x()
 생성자 함수를 통해 객체가 생성 됩니다.


여기서 x 함수 객체를 생성자 함수라 표현 하는것은 객체(this)를 생성하는
함수이기 때문입니다.

자바스크립트 함수 2


자바스크립트 언어는 설계상 클래스 라는 계념이 존재하지 않지만, 상황에 따라
함수가 클래스를 나타내기도 합니다.

"즉, OOP 언어의 클래스 계념이 어느정도 존재 한다고 볼 수도 있습니다."


아래 예제를 보시겠습니다.

  1. function x(){
  2.  
  3.     this.x = 1;
  4.     this.y = 2;
  5. }
  6.  
  7. alert(typeof new x()); // object
  8. alert(new x().x); // 1
  9. alert(new x().y); // 2


1. x 함수 객체가 생성 됩니다.

2. x 함수 객체의 인스턴스 맴버 x, y를 추가 합니다.
 

3.  typeof new x() 의 데이터 타입은 object가 반환됩니다.

4.   new x().x 객체의 인스턴스 맴버  x값 1을  반환합니다.

5.   new x().y 객체의 인스턴스 맴버 y값 2을 반환합니다.  




마치 타 언어의 클래스 처럼 new 연산자와 맴버가 설계된 생성자를 통해 객체를 생성하지만, 유사성만 가질 뿐 앞서 말했던것처럼 자바스크립트는 클래스가 존재 하지 않습니다.

즉, "자바스크립트"에서 객체는 단순히 "key/value"로 구성되며, 언제든 생성하고 변경할 수 있습니다.




자바스크립트 함수 1


"자바스크립트" 언어 에서 함수는 객체입니다.

이유는 아래와 같습니다. 

 

  1. alert(typeof function() { return this; }); // function
  2. alert(typeof new Function('', 'return this')); // function
  3.  
  4. alert(function() { return this; }.constructor); // Function()
  5. alert(new Function('', 'return this').constructor); // Function()

 

typeof function() { return this; }  와  typeof new Function('', 'return this') 코드 모두 함수 객체를 생성한다는 것을 알 수 있습니다.


즉, function() { return this; }.constructor  와   new Function('', 'return this').constructor의 생성자 함수는 Function()이며, 둘다 함수 객체 라는 것을 다시
한번 알 수 있습니다. 


두 객체 생성 방식의 차이점으로는 첫번째 함수 객체는 암묵적으로 생성되었고 두번째 함수 객체는 명시적으로 
new 연산자를 통해 생성되었다는 것입니다.

prev 1 ··· 51 52 53 54 55 56 next