46. 인스턴스 생성 방법/목적, new 연산자
new 연산자
연산자이므로 빌트인 Number 오브젝트에 속하진 않지만 다음장의 Number 인스턴스 생성과 연관이 되므로 여기에서 다룹니다.
구분 | 데이터(값) |
---|---|
constructor | 생성자 |
파라미터 | 값opt |
반환 | 생성한 인스턴스 |
오브젝트로 인스턴스를 생성하여 반환
- 원본을 복사하는 개념
new 연산자를 사용하면 인스턴스
var obj = new Number(); console.log(typeof obj); // object
빌트인 Number 오브젝트로 인스턴스를 생성하여 반환
원본인 빌트인 Number 오브젝트를 복사하여 obj 에 붙여넣는 느낌
이 복사한 복사본을 인스턴스라고 부릅니다.
Number() 이렇게 함수 호출한 것은 데이터 타입을 Number로 변환해주는 기능이었습니다.
new 연산자를 앞에 붙여서 Number() 함수를 호출하면 이때는 constructor 라는 생성자가 호출됩니다.
이때는 Number 함수라 하지 않고 생성자 함수라 합니다.
대문자 Object는 { key : value } 형태의 프로퍼티입니다. 이 프로퍼티의 집합이 대문자 Object
하지만 여기서의 소문자 object는 인스턴스입니다. 전혀 성격이 다릅니다.
그래서 소문자 object와 대문자 Object는 반드시 구분해야 합니다.생성한 인스턴스 타입은 object
- 코딩 관례로 첫 문자를 대문자로 작성
첫문자가 ‘N’umber 대문자이면 아 이건 인스턴스를 만들어 사용하겠다는 의도가 있구나.라고 알 수 있습니다.
단지 첫 문자를 대문자로 썼을뿐인데 이런 내용이 내포되어있는 것입니다.(시멘틱)
인스턴스 생성 목적
인스턴스마다 값을 갖기 위한 것
var oneObj = new Number("123"); console.log(oneObj.valueOf()); // 123 var twoObj = new Number("456"); console.log(twoObj.valueOf()); // 456
파라미터로 전달받은 값들을 어딘가 저장하긴 해야됩니다.
그 저장하는 곳이 바로 인스턴스입니다.
위 코드를 보시면 oneObj 와 twoObj 는 다 똑같습니다.
값만 다를 뿐입니다.
이것이 바로 인스턴스를 생성하는 목적입니다.값이 항상 다른 것은 아닙니다.
값이 같을 수도 있고 파라미터 값이 아예 없을 수도 있습니다.
단지 값이 다를 경우를 대비해 인스턴스라는 개념이 있는 것입니다.
이것이 바로 인스턴스를 만드는 목적입니다.