생성자 함수의 메쏘드를 바로 호출하는 방법

September 3, 2014

보통 new 생성자를 이용하여 생성한 객체의 메쏘드를 이용할 때는 다음과 같은 절차가 일반적이다.

  1. new 생성자를 이용하여 객체를 생성한 후 변수에 담는다.
  2. 다음 변수에서 객체의 메쏘드를 호출한다.
var now = new Date();
now.getTime(); // 1409681705232

근데 다음의 코드도 같은 값을 반환한다.

(new Date).getTime(); // 1409681705232

Date 자체는 함수이므로 메쏘드에 바로 접근 할 수 없고 new Date()는 객체를 생성하지만 변수에 할당하기 전에는 메쏘드에 접근할 수 없다. 특이하게도 ()로 감싸게 되면 바로 접근이 가능한데 이렇게 동작하는 이유는 잘 모르겠다. 어쩌면 즉시 실행 함수에 객체가 포함된 모양이니까 ({})식의 표현이 this이지 않을까 생각해본다.

java의 경우 new Date() 보다는 (new Date)를 권장하는데 전자의 경우 쓸대없는 가비지를 만들어 낸다는 이유다.

Comments

comments powered by Disqus