본문 바로가기
javaScript

함수호출(), new 함수호출() 차이

by mooyou 2023. 8. 30.
728x90
300x250

 

함수호출()

 var userID = "test";
function Person(name){
    this.userID = name;
}

/* 함수호출 */
Person("user111"); //1
console.log(`userID = ${userID}`);

/*
 실행결과 :
 userID = user111
 */

 

자바스크립트에서 보통 함수와 클래스를 구분하기 위해 클래스일 경우는 보통 맨 앞글자를 대문자로 사용한다. 따라서 Person() 클래스를 의미한다. 그러나 함수와 클래스는 정의하는 문법이 같기 때문에 1번처럼 일반적인 함수를 호출하듯이 호출하면 함수 호출이 된다.

일반 함수에서의 this는 window 객체를 나타낸다. 따라서 전역에 있는 userID값이 변경된다.

 

 

new 함수호출()

var userID = "test";

function Person(name){
    this.userID = name; //1
}

/* 인스턴스 생성 */
var person = new Person("user222");
console.log(`userID = ${userID}`);


/*
 실행결과 :
 userID = test
 */

도일한 클래스를 이번에는 앞에 new를 붙여서 호출해 줄 경우 이때는 인스턴스가 생성 되기 때문에 여기서의 this는 window가 아니라 인스턴스 자기자신이 된다.

그렇기 때문에 1번 구문이 실행되면 새로운 인스턴스에 할당되게 되고 전역변수 userID에는 영향이 없다.

728x90
반응형

댓글