안드로이드&IOS 앱 개발자 양성

안드로이드&IOS 앱 개발자 양성(42일차) - BOM(Browser Object Model), DOM

HRuler 2020. 6. 5. 18:20
더보기

 ** BOM(Browser Object Mode)
1. Math
2. Date
3. Array
4. JSON 객체
5. window 객체
6. screen 객체
7. location 객체
8. navigator 객체
9. history

 ** DOM(Document Object Model)
1. document
2. 이벤트 처리
3. 이벤트 종류

 * BOM(Browser Object Model)

 - 자바스크립트가 제공하는 객체

1. Math

 - 모든 멤버가 전부 정적(static) 멤버

 - 별도의 객체를 생성하지 않고 Mate를 이용해서 모든 멤버에 접근

2. Date

 - 날짜와 관련된 객체

3. Array

 - 배열 객체

 - 배열에서 가장 중요한 것은 생성, 전체 데이터 접근, 정렬이다.

1) 생성 방법

[데이터 나열] : 처음부터 데이터가 존재하는 경우

new Array(개수) : 처음에는 데이터가 없고 나중에 데이터가 만들어지는 경우

2) 데이터 접근

 - 전체를 읽기

for(인덱스 변수 in 배열){

               배열[인덱스 변수]

}

 - 하나씩 읽기

length 속성 : 데이터 개수

배열[인덱스] -> 여기서의 인덱스는 0부터 데이터 개수 - 1까지

3) 자바스크립트에서는 배열에 toString 메서드가 재정의 되어 있어서 요소 각각의 toString을 호출해서 [ ]로 묶어서 리턴해준다.

4) 데이터 정렬

 - sort 메서드를 이용

 - 정렬은 오름차순이 기본

 - 자바스크립트는 숫자 데이터도 문자열로 변환해서 정렬

 - 크기 비교를 할 수 없거나 다른 방식의 정렬을 원하면 sort에 크기 비교를 위한 함수를 만들어주어야 한다.

 - 크기 비교하는 함수는 매개변수가 2개이고 정수를 리턴해줘야 한다.

 - 양수가 리턴되면 2개의 데이터의 자리를 바꾸고 0이나 음수가 리턴되면 2개의 자리를 바꾸지 않는다.

 - 자바스크립트는 문자도 부등호를 이용해서 크기 비교를 할 수 있다.

 - 문자열 데이터 정렬은 바로 정렬되지만 숫자 데이터는 크기 비교한 후 정렬하여야 한다.

5) Map-Reduce Programming

 - 분산된 데이터 처리 시스템에서 데이터를 모아서 처리하지 않고 데이터가 있는 곳에서 처리를 한 후 결과를 모으는 방식

 - 최근에 Edge Computing {데이터가 발생한 곳에서 처리 - 스마트 폰에서 보안이 필요한 데이터(생체 인식 데이터)를 서버로 보내서 처리하지 말고 발생한 곳에서 바로 처리}과 많이 등장하는 용어 중의 하나이다.

 - 이 프로그래밍을 위해서 공통으로 사용되는 함수가 map, filter, reduce이다.

 - map은 데이터를 변환해서 모아주는 함수, filter는 조건에 맞는 데이터만 골라내는 함수, reduce는 연산을 수행해서 결과를 리턴하는 함수이다.

 - map은 하나의 매개변수를 받아서 리턴하는 함수를 대입해줘야 한다.

 - filter는 하나의 매개변수를 받아서 Boolean을 리턴하는 함수를 대입해줘야 한다.

 - 자바스크립트는 매개변수를 2개를 추가하는데 두 번째 매개변수가 인덱스이고 세 번째 매개변수는 배열 자신을 저장한다.

기존 배열에 숫자 1씩 더하여 console에 출력

4. JSON 객체

 - JSON 문자열과 데이터 파싱을 위해서 추가된 객체

 - JSON(Java Script Object Notation) : 자바스크립트 표현 방식으로 데이터를 표현하는 표준 포맷으로 현재 가장 많이 사용되는 포맷

 - 배열은 [ ] 안에 객체는 { } 안에 속성:값의 형식으로 작성

 - JSON.parse(문자열) : JSON으로 표현된 문자열을 자바스크립트 데이터 타입으로 변환을 해 준다.

 - 이 메소드는 ajax에서 많이 사용

 - JSON.stringify(자바스크립트의 데이터) : 데이터를 JSON 문자열로 만들어서 리턴

5. window 객체

 - 웹 브라우저 및 프레임을 표시하기 위한 객체

 - 이 객체의 멤버는 window. 을 생략하고 사용 가능

 - 많이 사용하는 속성과 메소드

 - location : 현재 URL을 저장하고 있는데 이 속성에 다른 URL을 대입하면 그 URL로 이동

 - open(url, 윈도우 이름, 옵션, history 저장 여부) : 팝업 창을 만들어주는 메소드

 - 타이머 관련 메소드

 - setTimeout(함수, 시간) - 시간 후에 함수를 1번 수행

 - setInterval(함수, 시간) - 시간마다 함수를 수행

 - clearTimeout(타이머 이름), clearInterval(타이머 이름) : 타이머를 중지

 - 윈도우 창 관련 메소드

 - moveBy(x, y), MoveTo(x, y) : 좌표로 브라우저를 옮김

 - resizeBy(width, height), resizeTo(width, height) : 브라우저의 크기 변경

 - scrollBy(x, y), scrollTo(x, y) : 스크롤을 변경

 - By는 현재 위치나 크기를 기준으로 변경을 하고 To는 현재 위치나 크기와 상관없이 변경

 - close() : 창을 닫는 메소드

idx가 1씩 증가하면서 이미지 5개를 순차적으로 변경하면서 보여줌

6. screen 객체

 - 화면에 대한 정보를 가진 객체

 - width, height : 웹 브라우저의 스크린 너비와 높이

7. location 객체

 - URL에 대한 정보를 가진 객체

 - href : 현재 보여지는 페이지의 url을 리턴하고 이 속성에 url을 대입하면 url로 이동을 한다.

8. navigator 객체

 - 웹 브라우저에 대한 정보 및 버전과 시스템 등의 정보를 가진 객체

 - userAgent : 웹 브라우저의 정보와 플랫폼 정보를 리턴

 - userAgent 정보를 이용해서 스마트 폰에서 접속하면 모바일 페이지로 보내고 스마트폰이 아닌 곳에서 접속하면 일반 페이지로 접속을 하도록 만든다.

 - userAgent 속성 안에 스마트 폰 운영체제 이름이 있는지 확인해서 작업

 - 아이폰은 iPhone, 아이패드는 iPad, 아이팟 iPod, 안드로이드는 Android

9. history

 - 방문했던 URL에 대한 정보를 저장한 객체

 - back() : 뒤로 버튼을 누른 것처럼 한 페이지 뒤로 이동

 - forward() : 앞으로 버튼을 누른 것처럼 한 페이지 뒤로 이동

 - go() : URL이나 인덱스를 사용해서 인덱스번째 또는 URL로 이동

* DOM

 - Document Object Model

 - body 태그 내의 모든 객체를 DOM이라고 한다.

1. document

 - body : body 태그에 해당하는 객체

 - cookie : 쿠키 파일에 기술할 정보를 설정할 수 있는 속성

 - 서버로 데이터를 전송하고 클라이언트에서 사용할 수 있는 데이터를 쿠키라고 한다.

 - 모든 DOM 객체에게 상속되는 속성

 - innerHTML : 태그와 태그 사이의 문자열 <h1>제목</h1>에서 제목이 innerHTML이다.

 - value : 입력도구들에서 입력된 값

 - style : 스타일 속성으로 style.속성 = 값을 설정하면 스타일을 적용할 수 있다.

 - 값은 전부 문자열의 형태로 설정

 - refferer : 이 페이지에 어떻게 접속했는지를 저장하고 있는 속성

 - getElementById(id) : id를 가진 객체의 참조를 리턴한다.

 - id를 가진 객체(태그)가 로드(메모리 할당)되고 난 이후에 사용해야 한다.

2. 이벤트 처리

 - event : 사용자 또는 애플리케이션이 발생시키는 사건

 - event가 발생했을 때 코드를 수행하도록 하는 것을 event handling이라고 하고 수행되는 코드를 가지고 있는 함수나 인스턴스를 event handler라고 한다.

1) 이벤트 처리 방법

 - 인라인 처리 - 태그 안에서 처리

<태그 이벤트 이름 = "script:처리 코드"></태그>

script : 생략 가능

 - 고전적 이벤트 처리

DOM객체.이벤트이름 = function(event객체이름)(이벤트 처리 내용);

 - 표준 이벤트 모델 - 권장

DOM객체.addEventListener("이벤트이름", function(event객체이름){

                이벤트 처리 내용;

});

이벤트 처리 방법 3가지

2) 이벤트 처리 메소드에서 this

 - 이벤트 처리 메소드 안에서 this는 이벤트가 발생한 객체이다.

 - this를 이용해서 속성을 조작하면 이벤트가 발생한 객체의 속성이 변경된다.

3) event 객체

 - 발생한 이벤트에 대한 정보를 가진 객체

 - 이 객체는 IE와 다른 브라우저가 가져오는 방법이 다르다.

var 변수명 = 이벤트 처리 함수의 매개변수 || window.event

 - 일반적인 브라우저에서는 이벤트 처리 함수의 매개변수가 event 객체가 되고 IE에서는 window.event가 event 객체이다.

 - 프로퍼티

 - data : 드래그 앤 드랍이 발생할 때 드랍된 객체의 URL

 - modifier : 같이 누른 조합키(shift, alt, control) 정보

 - x, y : 이벤트가 발생한 좌표

 - which : 이벤트가 발생한 키보드 값

 - target : 이벤트가 전달된 객체를 문자열로 저장

4) eventtrigget

 - 데이터베이스에서는 데이터의 삽입이나 삭제 또는 갱신을 하기 전이나 한 후에 수행할 동작을 만드는 개체

 - 강제로 다른 객체의 이벤트를 발생시키는 것

이벤트객체.on이벤트() -> 고전적 이벤트 모델을 사용한 경우

이벤트객체.이벤트() -> 표준 이벤트 모델을 사용한 경우

5) default event

 - 이벤트 처리를 하지 않아도 가지고 있는 기본적인 이벤트 처리 코드

 - a 태그는 아무런 코드를 작성하지 않아도 href 속성에 설정된 URL로 이동

 - submit : form 안에 존재하면 form의 데이터를 action으로 전송

 - reset : form 안에 존재하면 form의 내용을 모두 삭제

 - button 태그 : form 안에 존재하면 form의 내용을 모두 삭제

 - keydown : 누른 키보드의 값을 input 상자에 출력

 - 이벤트 처리 중에 기본 이벤트를 제거하고 싶을 때는 event 객체.preventDefault()를 호출하거나 false를 리턴하면 된다.

이벤트 처리를 이용해서 비밀번호 확인 시 일치하지 않으면 페이지가 넘어가지 않고 메시지를 띄움

6) event bubbling

 - 부모에 이벤트 처리 내용이 있고 포함된 자식에 동일한 이벤트를 처리하는 내용이 있을 때 자식에 이벤트가 발생하면 자식의 이벤트 처리 내용을 수행하고 부모에게도 이벤트를 전달해서 부모의 이벤트 처리 내용도 수행하는 것

 - 이벤트 버블링을 막고자 하는 경우에는 일반 브라우저에서는 이벤트 객체가

 - stopPropagation() 메소드를 호출하면 된다.

 - IE에서는 이벤트 객체의 cancelBubble 속성에 true를 대입

3. 이벤트 종류

1) 클릭 이벤트

click, dblclick

 - 버튼이나 a 태그에 사용해서 누르면 작업을 수행하고자 할 때 많이 사용

2) 키보드 이벤트

keydown, keypress, keyup

 - 기본적인 처리로 누른 키 값을 input 객체에 출력

 - event 객체에 전달되는 값

 - which : 누른 키의 ASCII 코드 값을 저장 - 이 속성이 없는 경우는 keyCode에 저장

 - code : 누른 문자에 해당하는 상수

 - key : 누른 문자

 - which는 누른 키보드의 코드 값을 가지고 있게 되는데 코드 값은 대소문자 구분을 하지 않고 값을 리턴

 - 특수문자에도 반응

 - key는 누른 문자를 가지고 있는데 대소문자 구분을 한다.

 - 특수문자에는 반응을 하지 않음

html과 js 파일에 which, code, key를 사용하여 각 키의 값을 나타냄