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
반응형
'javaScript' 카테고리의 다른 글
클래스 프로퍼티와 메서드 (0) | 2023.09.01 |
---|---|
함수단위 코딩 단점, 외부에서 내부 속성 사용하는법 - 비공개 (0) | 2023.08.31 |
상황에 따른 this 값 (0) | 2023.08.29 |
메서드 내부의 중첩 함수에서의 this (0) | 2023.08.28 |
메서드 에서의 this (0) | 2023.08.27 |
댓글