string 프리미티브랑 String 오브젝트에 대하여 MDN을 보다가 생긴 궁금증인데
String이 생성자로 불리는 컨텍스트에서는 String 오브젝트를 생성해서 반환한다고 되어있고
String이 함수로 불리는 컨텍스트에서는 string 프리미티를 반환한다고 되어 있더라고.
즉 String이라는 녀석도 function 오브젝트일거 같은데, 어떻게 그 안에서 new로 호출된 생성자인지 그냥 함수인지 어떻게 구별하지?
안에서
let str = "100";
new String(str); // String 오브젝트 반환
String(str); // string 프리미티브 반환.
function String(str) {
// 여기서 어떻게 String이 함수로 불렸는지 생성자로 불리는 알 수 있나?
}
실행은 똑같은데 좌변에 return 된게 들어가는지 차이ㅇㅅㅇ
ㅇㅇ 알 수 있음
https://ko.javascript.info/constructor-new
실제로 이것을 활용해서, Error 같은 경우는 new로 생성하나 그냥 Error 함수를 호출해서 생성하나 똑같이 에러 객체를 생성해서 반환함(원래는 new 연산자를 사용하지 않으면 새로운 객체를 생성할 수 없음.)
오
오 감사