티스토리 뷰
1. 객체는 선언적 형식과 생성자 형식 두 가지로 정의 할 수 있음
var myObj = {
key: value
// ...
};
// The constructed form looks like this:
var myObj = new Object();
myObj.key = value;
2. 객체의 7가지 주요 타입
- null
- undefined
- boolean
- number
- string
- object
- symbol(ES6에서 추가)
단순 원시 타입(string,number,boolean, null, undefined)은 객체가 아니다.
자바스크립트의 모든 것이 객체다 라는 말은 옳지 않다.
function은 객체의 하위 타입이고, 배열 역시 추가 기능이 구현된 객체의 일종이다.
function은 javascript의 일급 객체이며, 여타의 일반 객체와 똑같이 취급된다.
3. 내장객체
내장 객체라고 부르는 객체 하위 타입도 있다. 일부는 이름만 보면 대응되는 단순 원시 타입과 직접 연관되어 보이지만 실제 관계는 뜻 밖에 복잡하다.
- String
- Number
- Boolean
- Object
- Function
- Array
- Date
- RegExp
- Error
var strPrimitive = "I am a string";
typeof strPrimitive; // "string"
strPrimitive instanceof String; // false
var strObject = new String( "I am a string" );
typeof strObject; // "object"
strObject instanceof String; // true
// inspect the object sub-type
Object.prototype.toString.call( strObject ); // [object String]
"I am string"이라는 문자열은 그 자체로 원시 리터럴이고, 불변값이지만,
우리가 여기에서 String객체에 관련된 함수를 사용하려는 경우 String객체로 자바스크립트 엔진이 자동으로 강제변환 시켜주게 된다.
그렇기 때문에 문자열을 생성할 때 꼭 new String() 형식으로 생성하지 않아도 된다. number나 boolean 또한 마찬가지다.
3. 내용
객체는 특정한 위치에 저장된 모든 타입의 값, 즉 프로퍼티로 내용이 채워진다고 했지만, 실제로 객체 내부에 프로퍼티 값들이 차곡차곡 보관된 듯한 느낌이 들지만 겉모습만 그렇다.
엔진이 값을 저장하는 방식은 구현 의존적인데, 이는 객체 컨테이너에 담지 않는다.
객체 컨테이너는 실제로 프로퍼티 값이 있는 곳을 가리키는 포인터 역할을 담당하는 프로퍼티명이 담겨 있다.
객체의 프로퍼티에 접근하는 방법은 두가지이다.
var myObject = {
a: 2
};
myObject.a; // 2
myObject["a"]; // 2
객체 프로퍼티명은 언제나 문자열이다. 문자열 이외의 다른 원시 값을 쓰면 우선 문자열로 변환된다. 배열 인덱스로 사용하는 숫자도 마찬가지이므로 공연히 객체와 배열 사이에 숫자를 써서 헷갈리는 코드를 만들지 않도록 해야 한다.
var myObject = { };
myObject[true] = "foo";
myObject[3] = "bar";
myObject[myObject] = "baz";
myObject["true"]; // "foo"
myObject["3"]; // "bar"
myObject["[object Object]"]; // "baz"
'Javascript' 카테고리의 다른 글
WebView의 디버깅 (0) | 2021.01.20 |
---|---|
최상위 window의 parent (0) | 2021.01.19 |
Promise 내의 async (1) | 2021.01.07 |
javascript의 closure (0) | 2021.01.04 |
Node.js의 논블로킹 I/O 방식의 장점, 단점 (0) | 2019.08.08 |
XHR(XML Http Request)의 동작방식과 호출 방법 (0) | 2019.07.12 |
Javascript의 this에 대하여 (2) - this의 바인딩 규칙 (0) | 2019.07.06 |
Javascript의 this에 대하여 (1) (0) | 2019.06.21 |
- Total
- Today
- Yesterday
- webspider
- java #백준 #알고리즘 #로또 #6603
- java #하노이 #알고리즘 #백준
- 쿼드트리
- react
- 백준
- java #알고리즘 #백준
- javascript #백준 #알고리즘 #LCS
- 1992번
- 한글 자동 완성
- webpack
- javascript #백준 #회의실배정 #알고리즘
- 백준 #java #알고리즘
- 백준 #알고리즘 #전깃줄 #NodeJs #javascript
- 2630번
- java #오르막수 #백준 #알고리즘
- 중간거리 #야만나 #약속장소추천 #중간위치 #웹 #리액트 #React #reactjs #kakao지도 #kakaoapi
- java #알고리즘 #백준 #패션왕신해빈
- 알고리즘
- java #알고리즘 #백준 #퇴사
- npm
- java #퀵소트 #quicksort #알고리즘 #백준
- java #백준 #알고리즘 #2805 #나무자르기
- 색종이자르기
- Terminal
- TypeScript
- java #알고리즘 #백준 #N과M #백트래킹
- Game
- Javascript
- javascript #연속합 #알고리즘 #백준
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |