다루는 내용
- 객체로 작업하기
- 배열 생성하고 조작하기
- 자바스크립트의 데이터 타입 이해
- 원시 데이터 및 원시 래퍼로 작업하기
1. 객체로 작업하기
- 객체란 참조 타입이며 클래스와는 다르다.
1-1. Object 타입
- 가장 많이 사용하는 타입으로 new 연산자 혹은 객체 리터럴로 생성할 수 있다.
1) var person = new Person(); 2) var person = {};
- 객체 리터럴 표기법을 사용하면 Object 생성자를 호출하지 않으며, 프로퍼티가 여러개 일 때 가독성을 위해 사용하길 권함.
1-2. Array 타입
- 배열의 크기는 동적으로 할당되며, 배열 element 에 어떤 데이터 타입도 가능
- Object 와 비슷하게 new 연산자 혹은 배열 리터럴로 생성 가능
1) var colors1 = new Array(20); var colors2 = new Array("green", "dark"); 2) var color = ["red", "blue"];
- Array.isArray(value) 를 통해 배열을 판단할 수 있음
- join() 을 통해 배열을 문자열로 나타낼 수 있음
var color = ["red", "green", "black"]; console.log(color.join(",")); // red,green,black
- push() 와 pop() 을 통해 LIFO 인 스택 처럼 동작이 가능
- 배열 순서를 조작하는 매서드는 sort(), reverse() 가 있음.
var values = [1,3,2,4]; console.log(values.reverse()); // 4,2,3,1 - 단순 순서 조작 console.log(values.sort()); // 1,2,3,4
// sort 의 경우
var val = [1,5,10];
val.sort() // 1,10,5 - 문자열로 비교한 결과가 나오므로 보통 비교함수를 넘겨서 처리함
- concat() 의 경우 현재 배열 데이터를 기반으로 매개변수를 더한 새로운 배열을 생성
- slice() 의 경우 데이터의 일부를 가진 새 배열을 생성
- splice() 의 경우 중간에 데이터를 삽입하고자 할 때 사용하며 `삭제한 데이터의 배열을 반환`함
```javascript
var sliceNumber = [1,2,3,4,5,6]
sliceNumber(1); // 2,3,4,5,6
sliceNumber(1,4); // 2,3,4
---------------------------------
var color = ["red", "blue"];
var removed = color.splice(0,1);
color // blue
removed // red
removed = color.splice(1,0,"yellow");
color // blue, yellow
remove // ""
removed = color.splice(1,1,"green")
color // blue, green
removed // yellow
- 위치를 검색할 때는 indexOf() 와 lastIndexOf() 가 있으며, 2개의 매개변수 (검색할 데이터, 검색을 시작할 인덱스) 이다.
- 반복 메소드로는 every(), filter(), forEach(), map(), some() 5가지가 있음
- every : 배열의 모든 데이터가 true 면 true 반환
- filter : 반환값이 true 인 것만 새 배열에 저장하여 반환
- forEach : for 문과 같으며 반환값이 없음
- map : forEach 와 비슷하지만, 결과를 반환함
- some : 배열의 반환 값 중 하나라도 true 면 true 반환
- 감소메소드 reduce(), reduceRight() 가 있으며, 배열을 모두 순회하며 값을 하나 만들어 반환
1-3 Date 타입
var now = new Date();
var someDate = new Date("November 11, 2019");
1-4 RegExp 타입
- 정규표현식
var expression = /pattern/flags;
- g : 전역모드, i : 대소문자 비구분, m : 여러줄 모드
var pattern1 = /[bc]at/i; var pattern2 = new RegExp("[bc]at", "i"); // pattern1과 pattern2 는 같은 표현
var text = "Cat is bat"
pattern1.test(text) // 정규표현식 테스트
#### 1-5 Function 타입
- 함수는 사실 객체이다. (함수 이름은 단순히 함수 객체를 가리키는 포인터일 뿐)
```javascript
var sum = function(num1, num2) {
return num1 + num2;
}
- 함수 선언과 함수 표현식은 약간 차이점이 있는데, 함수 선언은 불러오기 전에 실행이 가능하고, 함수 표현식은 해당 코드가 실행이 되야 사용할 수 있다. 이는 호이스팅 때문
sum(10,10) // 정상 function sum(num1, num2) { return num1 + num2; }
sum(10,10) // error
var sum = function(num1, num2) {
return num1 + num2;
}
- 함수 이름은 단순히 객체일 뿐이므로, 다른 함수의 매개변수로 가능
```javascript
function callSomeFunction(someFunction, someArg) {
return someFUnction(someArg);
}
function add10(num) {
return num + 10;
}
var ret = callSomeFunction(add10, 10); // ret = 20
1-6 원시 래퍼 타입
- Boolean, Number, String 이 있으며 각 원시타입에 대응
- 읽기 모드로 접근할 때 원시 래퍼 객체의 인스턴스가 만들어지며, 이를 통해 데이터 조작
- 래퍼 객체는 원시 값을 조작하는 문장이 실행되는 즉시 파괴
1-7 내장된 싱글톤 객체
- Global, window, Math
- Global 객체는 모든 전역 변수와 함수를 프로퍼티 형태로 포함하며, 접근할 수 있는 방법이 없기에 웹브라우저에서는 window 를 통해 가능
'개발 관련 > javascript' 카테고리의 다른 글
7. 함수 표현식 (0) | 2022.07.13 |
---|---|
6. 객체 지향 프로그래밍 (0) | 2022.07.13 |
4. 변수, 스코프, 메모리 (0) | 2022.07.13 |
3. 언어의 기초 (0) | 2022.07.13 |
2. HTML 속의 자바스크립트 (0) | 2022.07.13 |