10-3. Object 오브젝트(ES3 기준) / Object 인스턴스 생성, 프리미티브 값 구하기
new Object()
구분 | 데이터(값) |
---|---|
파라미터 | 값opt |
반환 | 생성한 인스턴스 |
- 인스턴스를 생성하여 반환
파라미터의 데이터 타입에 따라
생성할 인스턴스 결정
var newNum = new Number(123); console.log(typeof newNum); // number console.log(newNum + 100); // 223
- new Number(123)로 생성한 인스턴스 타입은 object이며 프리미티 값은 123
var newObj = new Object(123); console.log(typeof newObj); // object console.log(newObj + 100); // 223
- new Object(123)로 생성한 인스턴스의 타입도 object이고 프리미티 값은 123
- 2개 인스턴스 모두 100을 더할 수 있으며 값이 더해진다는 것은 Number 타입이라는 것
- new Object()는 파라미터 값 타입이
Number 타입이면 Number 인스턴스를 생성하고
String 타입이면 String 인스턴스를 생성
- 빌트인 Object 오브젝트와 다른 빌트인 오브젝트와의 차이점
- new Number()는 Number 타입 인스턴스 생성
- new String()은 String 타입 인스턴스 생성
원래 Object는 { key: value } 형태의 프로퍼티입니다.
그런데 newObj+100 이 223 출력.
newObj 프리미티브 값으로 123이 설정되었고, 이것의 타입은 Number 타입이라는 겁니다.
즉, newObj는 Number 인스턴스인 겁니다.
이와같이 new Object()는 파라미터 값에 따라서 인스턴스가 결정됩니다.
파라미터 값이 undefined, null이면
- 빈 Object 인스턴스 반환
var newObj = new Object(); console.log(newObj); // {}
- new Object()처럼 파라미터를 작성하지 않으면 undefined를 작성한 것과 같으며 값을 갖지 않은 Object 인스턴스 생성
{}는 Object의 프리미티브 디폴트 값입니다.
Object()
구분 | 데이터(값) |
---|---|
파라미터 | 값opt |
반환 | 생성한 인스턴스 |
Object 인스턴스 생성 new 연산자를 사용하지 않은것 뿐, new 있을 때와 없을 때 파라미터에서만 좀 차이있는거같음 - 아니네, 그냥 똑같음 차이점없음
- 파라미터는 { key(name) : value } 형태
var obj = Object({ name : "JS책" }); console.log(obj); // {name: "JS책"} <- 파라미터로 작성된 값이 인스턴스의 프리미티브 값이 됨 var emptyObj = Object(); console.log(emptyObj); // {}
- 파라미터를 작성하지 않으면
new Object()
와 같음
Object 생성 방법
var abc = {};
- var abc = Object() 와 같음
- 즉, var abc = {}을 실행하면
Object 인스턴스가 생성됨
var obj = Object({ name : "value" }); console.log(obj); // {name: "value"} console.log(obj instanceof Object); // true
- true가 출력된 것은 Object로 생성한 인스턴스라는 것을 뜻합니다.
var obj = {name: "value"}; console.log(obj); // {name: "value"} console.info(obj instanceof Object); // true
- true가 출력된 것은 Object로 생성한 인스턴스라는 것을 뜻합니다.
- Object()와 Object 리터럴{} 모두 Object 인스턴스를 생성합니다.
- 그래서 Object()를 사용하지 않고 간단하게 {}를 사용합니다.
그래서 보통 자바스크립트 개발자들은 {} 중괄호를 사용해서 빌트인 오브젝트 오브젝트 인스턴스를 만듭니다.
{} 표기를
- 오브젝트 리터럴(Literal)이라고 부름
valueOf()
구분 | 데이터(값) |
---|---|
data | Object 인스턴스, 숫자 |
파라미터 | 사용하지 않음 |
반환 | 프리미티브 값 |
data 위치에 작성한 Object 인스턴스의 프리미티브 값 반환
var obj = { key : "value" }; console.log(obj.valueOf()); // {key:"value"}
- obj에 프리미티브 값으로 설정된 값 반환