자바스크림트는 객체 기반 언어
객체는 기능과 속성을 가지고 있다. ex) TV 라는 객체
기능 : 메소드(Methode)
속성 : 속성(Property) ex) TV의 크키나 색상 그리고 무게 등
기본형
객체.메소드(); //객체의 메서드를 실행
객체.속성; //객체의 속성값을 가져옴
객체.속성 = 값; //객체의 속성값을 바꿈
객체의 종류
- 내장객체
- 브라우저 객체모델(BOM, Browser Object Model)
- 문서 객체 모델 (DOM, Document Object Model)
내장객체
- 자바스크립트 엔진에 내장되어 있어 필요한 경우 생성해서 사용 가능
- 문자(String), 날짜(Date), 배열(Array), 수학(Math) 객체 등
브라우저 객체 모델(BOM)
- 브라우저 객체 모델은 브라우저에 계층 구조로 내장되어 있는 객체를 말함.
- window(브라우저), screen, location(주소 창), history, navigator 객체 등
- window(브라우저)는 document와 location 객체의 상위 객체
ex) 자바스크립트를 이용해 현재 열려있는 사이트에서 다른 사이트를 이동하려면 location 객체에
참조 주소(href) 속성을 바꾸면 된다.
아래와 같이 실행하면 location의 참조 주소(href)의 속성이 바뀌어 새 주소 사이트로 이동
window.location.href = "사이트 URL"
문서 객체 모델(DOM)
- 문서 객체 모델(DOM)은 HTML 문서 구조를 말함. HTML 문서의 기본 구조는 최상위 객체로 <html>이 있으며,
그 하위 객체로는 <head>와 <body>가 있다.
- 자바스크립트의 문서 객체 모델은 IE 8 이하 버전에서는 호환성이 떨어지기 때문에 사용하기 힘들다는 단점이 있다.
이러한 점을 극복하기 위해 제이쿼리 문서객체 모델을 많이 사용한다.
내장객체(Built - in Object)
- 브라우저의 자바스크립트 엔진에 내장된 객체를 말하며 필요한 경우 객체를 생성해서 사용 가능
- 문자(Stirng), 날짜(Date), 배열(Array), 수학(Math), 정규 표현 객체(RegExp Object) 등이 있음.
기본형
참조 변수(인스턴스 이름) = new 생성함수();
예제)
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
|
<script>
var tv = new Object();
tv.color = "white";
tv.price = 300000;
tv.info = function(){
document.write("tv.색상" + this.color,"<br/>");
document.write("tv.가격" + this.price,"<br/>");
}
var car = {
color:"black",
price:5000000,
info : function(){
document.write("car 색상 :" + this.color, "<br/>");
document.write("car 가격 :" + this.price, "<br/>");
}
}
document.write("<h1>tv 객체 메서드 호출</h1>");
tv.info();
document.write("<h1>car 객체 메서드 호출</h1>");
car.info();
</script>
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4ftext-decoration:none">Colored by Color Scripter
|
날짜 정보 객체
- 날짜나 시간 관련 정보를 제공받고 싶을 때는 날짜 객체(Date Object)를 생성
기본형
참조변수 = new Date();
ex) var t = new Date();
-------------------------------------------------------
1. 참조변수 = new Date("연/월/일"); ex) var t = new Date("2002/05/31");
2. 참조변수 = new Date(연, 월 -1, 일); ex) var t = new Date(2002,4,31);
날짜 관련 메서드
날짜 정보를 가져올 때(GET) | 날짜 정보를 수정할 때(SET) | ||
getFullYear() | 연도 정보를 가져옴 | setFullYear() | 연도 정보만 수정함 |
getMonth() | 월 정보를 가져옴(현재 월-1) | setMonth() | 월 정보만 수정함(월-1) |
getDate() | 일 정보를 가져옴 | setDate() | 일 정보만 수정함 |
getDay() | 요일 정보를 가져옴 (일 : 0 ~ 토 : 6) | '요일'은 날짜를 바꾸면 자동으로 바뀌므로 setDay()는 없음 | |
getHours() | 시 정보를 가져옴 | setHours() | 시 정보만 수정함 |
getMinutes() | 분 정보를 가져옴 | setMinutes() | 분 정보만 수정함 |
getSeconds() | 초 정보를 가져옴 | setSeconds() | 초 정보만 수정함 |
getMilliseconds() | 밀리초 정보를 가져옴(1/1,000초 단위) | setMillisecond() | 밀리초 정보만 수정함 |
getTime() | 1970년 1월 1일부터 경과된 시간을 밀리초로 표기함 | setTime() | 1970년 1월 1일부터 경과된 시간을 밀리초로 수정함 |
toGMTString() | GMT 표준 표기 방식으로 문자형 데이터로 변환함 | toLocalsString() | 운영 시스템 표기 방식으로 문자형 데이터로 변환함 |
수학 객체
- 더하기, 곱하기, 나누기 등은 산술 여산자를 사용하면 된다.
- 최댓값, 최솟값, 반올림값 등은 산술연산자로 구할 수 없고 수학 객체 메서드를 이용하면 수학과 관련된 일련의 작업들을 처리할 수 있다.
수학 객체의 메서드 및 상수
종류 | 설명 |
Math.abs(숫자) | 숫자의 절댓값을 반환 |
Math.max(숫자1, 숫자2, 숫자3, 숫자4) | 숫자 중 가장 큰 값을 반환 |
Math.min(숫자1, 숫자2, 숫자3, 숫자4) | 숫자 중 가장 작은 값을 반환 |
Math.pow(숫자, 제곱값) | 숫자의 거듭제곱값을 반환 |
Math.random() | 0~1사이의 난수를 반환 |
Math.round(숫자) | 소수점 첫째자리에서 반올림하여 정수 반환 |
Math.ceil(숫자) | 소수점 첫째 자리에서 무조건 올림하여 정수 반환 |
Math.floor(숫자) | 소수점 첫째 자리에서 무조건 내림하여 정수 반환 |
Math.spirt(숫자) | 숫자의 제곱근값을 반환 |
Math.PI | 원주율 상수를 반환 |
1. 0과 1 사이가 아닌 임의로 지정한 숫자의 구간에서 난수를 정수로만 반환받으려면?
* 0부터 10까지의 난수 반환
Math.random()*10; //0부터 10까지 실수로 난수를 반환
Math.random()를 이용하여 0부터 10까지 정수로만 난수를 반환하려면
Math.floor()를 이용해야 한다.
.floor()메소드는 값을 내리기 때문에 10이 아닌 11을 사용
Math.floor(Math.random()*11);
* 난수를 발생하여 원하는 구간 정수의 값 구하기
Math.floor(Math.random()*(최댓값-최솟값 +1))+최솟값;
배열 객체
배열 객체(Array Object) : 여러개의 데이터를 하나의 장소에 저장
기본형
1)
var 참조변수 = new Array();
참조변수[0] = 값1;
참조변수[1] = 값2;
참조변수[2] = 값3;
참조변수[n-1] = 값n;
2) var 참조변수 = new Array(값1, 값2, 값3...값n);
3) var 참조변수 = [값1, 값2, 값3 ... 값n];
배열객체에 저장된 데이터 불러오기
기본형
참조변수[인덱스 번호];
배열 객체의 메서드 및 속성
종류 | 설명 |
join(연결 문자) | 배열 객체의 데이터를 연결 문자 기준으로 1개의 문자형 데이터로 변환 |
reverse() | 배열 객체의 데이터 순서를 거꾸로 바꾼후 반환 |
sort() | 배열 객체의 데이터를 오름차순으로 정렬 |
slice(index1, index2) | 배열 객체의 데이터 중 원하는 인덱스 구간만큼 잘라서 배열 객체로 가져옴 |
splice() | 배열 객체의 지정 데이터를 삭제하고 그 구간에 새 데이터를 삽입 |
concat() | 2개의 배열 객체를 하나로 결합 |
pop() | 배열에 저장된 데이터 중 마지막 인덱스에 저장된 데이터를 삭제 |
push(new data) | 배열 객체의 마지막 인덱스에 새 데이터를 삽입 |
shift() | 배열 객체에 저장된 데이터 중 첫 번째 인덱스에 저장된 데이터를 삭제 |
unshift(new data) | 배열 객체의 가장 앞의 인덱스에 새 데이터를 삽입 |
length | 배열에 저장된 총 데이터의 개수를 반환 |
<script>
//join(), concat(), sllice(), sort(), reverse()
var arr_1 = ["사당", "교대", "방배", "강남"];
var arr_2 = ["신사", "압구정", "옥수"];
var result = arr_1.join("-"); //배열에 저장된 값을 지정한 문자로 연결하여 하나의 문자열을 반환
console.log(result); //사당-교대-방배-강남
result = arr_1.concat(arr_2); //2개의 배열을 하나의 배열로 만들어 반환
console.log(result); //["사당", "교대", "방배", "강남", "신사", "압구정", "옥수"]
result = arr_1.slice(1,3); //배열의 1번부터 이전의 인덱스 요소를 잘라내고 나머지 값을 반환
console.log(result); // 교대", "방배"
arr_1.sort(); //배열의 값을 오름차순으로 정렬
console.log(arr_1); // "강남", "교대", "방배", "사당"
arr_2.reverse(); //배열 순서를 거꾸로 뒤집음.
console.log(arr_2); //"옥수", "압구정", "신사"
//splice(), pop(), push(), shift(), unshift()
var greenArr = ["교대", "방배", "역삼"];
var yellowArr = ["미금", "정자", "수서"];
greenArr.splice(2,1,"서초", "역삼"); //2번 부터 1개의 데이터를 삭제 그 다음 '서초', '역삼' 삽입
console.log(greenArr); //"교대", "방배", "서초", "역삼"
var data1 = yellowArr.pop(); //배열의 마지막 인덱스의 데이터를 data1에 저장
var data2 = yellowArr.shift(); //배열의 가장 앞쪽 인덱스의 데이터를 data2에 저장
yellowArr.push(data2); //data2에 저장된 데이터를 yellowArr 배열의 마지막 인덱스에 밀어넣음
console.log(yellowArr); //"정자", "미금"
yellowArr.unshift(data1); //data1에 저장된 데이터를 yellowArr 배열의 가장 앞쪽 인덱스에 밀어넣음
console.log(yellowArr); //"수서", "정자", "미금"
</script>
문자열 객체(String Object)
문자열 객체는 문자형 데이터를 객체로 취급하는 것으로, 자바스크립트에서 가장 많이 사용한다.
문자열 객체 생성하기
기본형
1) var 참조 변수 = new String(문자형 데이터);
var t = new String("hello javascript"); //문자열 객체 생성
2) var 참조변수 = 문자형 데이터;
var t = "hello javascript";
문자열 객체의 메서드 및 속성
종류 | 설명 |
charAt(index) | 문자열에서 인덱스 번호에 해당하는 문자를 반환 |
indexOf("찾을 문자") | 문자열에서 왼쪽부터 찾을 문자와 일치하는 문자를 찾아 제일 먼저 일치하는 문자의 인덱스 번호를 반환, 만일 찾는 문자가 없으면 -1을 반환 |
lastIndexOf("찾을 문자") | 문자열에서 오른쪽부터 찾을 문자와 일치하는 문자를 찾아 제일 먼저 일치하는 문자의 인덱스 번호를 반환, 만일 찾는 문자가 없으면 -1을 반환 |
match("찾을 문자") | 문자열에서 왼쪽부터 찾을 문자와 일치하는 문자를 찾아 제일 먼저 찾은 문자를 반환, 만일 찾는 문자가 없으면 null을 반환 |
replace("바꿀문자", "새문자") | 문자열에서 왼쪽부터 바꿀 문자와 일치하는 문자를 찾아 제일 먼저 찾은 문자를 새 문자로 치환 |
search("찾을문자") | 문자열에서 왼쪽부터 찾을문자와 일치하는 문자를 찾아 제일 먼저 일치하는 인덱스 번호 반환 |
slice(a, b) | a개의 문자를 자르고 b번째 이후에 문자를 자른 후 남은 문자를 반환 var str = "hello javascript" str.slice(3,7); <- "lo j"를 반환함 * -1은 뒤에서부터 첫 번째 글자를 가리킨다. |
substring(a, b) | a 인덱스부터 b 인덱스 이전 구간의 문자를 반환 var str = "hello javascript" str.substring(3,7); <- "lo j"를 반환함 var str = "hello javascript" str.substring(3,-3) <- "hel"을 반환 / 여기에서 -3은 인덱스 0을 가리킨다 그러므로 인덱스 0부터 인덱스 3이전 구간의 문자를 반환 |
substr(a, 문자개수) | 문자열에 a 인덱스부터 지정한 문자 개수만큼 문자열을 반환 |
split("문자") | 지정한 문자를 기준으로 문자 데이터를 나누어 배열에 저장하여 반환 var str = "webkmobilek2002"; var arr = str.split("k"); <-- arr = 0 : "web", 1 : "mobile", 2 : "2002" |
toLowerCase() | 문자열에서 영문 대문자를 모두 소문자로 바꿈 |
toUpperCase() | 문자열에서 영문 소문자를 모두 대문자로 바꿈 |
length | 문자열에서 문자의 개수를 반환 |
concat("새로운문자") | 문자열에서 새로운 문자열을 결합 |
charCodeAt(index) | 문자열 index에 해당 문자의 아스키 코드 값을 반환 |
fromCharCode(아스키 코드값) | 아스키 코드값에 해당하는 문자를 반환 String.fromCharCode(65); <- "A"를 반환 |
trim() | 문자의 앞 또는 뒤에 공백 문자열을 삭제 ("hello" => "hello"); |
브라우저 객체 모델
- 브라우저에 내장된 객체를 "브라우저 객체"라고 한다.
- window는 브라우저 객체의 최상위 객체 이며, window 객체에는 하위 객체가 포함되어 있다.
--> 계층구조로 이루어져 있으며, 이를 브라우저 객체 모델(BOM, Browser Object Model)라고 한다.
window 객체
- window는 브라우저 객체 최상위 객체
window 객체의 메서드 종류
종류 | 설명 |
open("URL", "새 창 이름", "새 창 옵션") | URL 페이지를 새 창으로 나타냄 |
alert(data) | 경고 창을 나타내고 데이터를 보여줌. |
prompt("질문", "답변") | 질문과 답변으로 질의 응답 창을 나타냄 |
confirm("질문 내용") | 질문 내용으로 확인이나 취소 창을 나타냄 [확인] 버튼을 누르면 true를 반환하고, [취소] 버튼을 누르면 false를 반환한다. |
moveTo(x, y) | 지정한 새 차의 위치를 이동 |
setInterval(function(){자바스크립트 코드}, 일정시간간격) | 지속적으로 일정한 시간 간격으로 함수를 호출하여 코드를 실행 |
setTimeout(function(){자바스크립트 코드}, 일정시간간격) | 단 한 번 일정한 시간 간격으로 함수를 호출하여 코드를 실행 |
open() 메서드 팝업창 나타내기
- open()메서드를 이용하면 지정한 URL 페이지를 새 브라우저 창에 나타낼 수 있다.
최근에는 팝업 창을 사용자가 차단할 수 있어 팝업 창을 활용한 광고는 효과가 떨어졌다.
기본형
open("URL", "새 창 이름", "새 창 옵션")
window.open("http://www.naver.com", "네이버", "width=350",
height=400, left=50, top=10, scrollbars=no");
새 창의 옵션 종류
속성 | 설명 |
width | 새 창의 너비를 설정 |
height | 새 창의 높이를 설정 |
left | 새 창의 수평(X축) 위치를 설정 |
top | 새 창의 수직(Y축) 위치를 설정 |
scrollbars | 새 창의 스크롤바의 숨김/노출을 설정 (숨김 = no, 노출 = yes) |
location | 새 창의 URL 주소 입력 영역의 숨김/노출을 설정 (숨김 = no, 노출 = yes) |
status | 새 창의 상태 표시줄 영역의 숨김/노출을 설정 (숨김 = no, 노출 = yes) |
toolbars | 새 창의 도구 상자 영역의 숨김/노출을 설정 (숨김 = no, 노출 = yes) |
alert()
- 경고 창을 나타낼 때 사용
기본형
alert("경고 메시지")
ex) alert("잘못 입력했습니다.") //경고창을 나타냄
prompt()
- 질의응답 창을 나타낼 때 사용한다.
- window.prompt() 메서드 역시 다음 기본형처럼 앞에 window 객체를 따로 작성하지 않아도 사용할 수 있다.
기본형
prompt("질의 내용","기본답변");
ex) prompt("당신의 연령은?", "0"); //질의응답 창을 나타낸다.
confirm()
- 확인/추소 창을 나타낼 떄 사용한다.
- window.prompt() 메서드 역시 다음 기본형처럼 앞에 window 객체를 따로 작성하지 않아도 사용할 수 있다.
기본형
confirm("질의 내용");
ex) confirm("정말로 삭제하시겠습니까?"); //확인/취소 창을 나타낸다.
- confirm()은 질문 창을 통해 확인 또는 취소 버튼을 클릭하도록 유도한다.
확인버튼은 true를 취소버튼은 false를 반환한다.
일정한 시간 간격으로 코드 실행하기
- 일정한시간 간격으로 코드를 실행하는 메서드로는 setInterval(), setTimeout()이 있다.
- setInterval()은 일정한 시간 간격으로 코드를 반복 실행
- setTimeout()은 일정한 시간후에 코드를 한 번만 실행하고 종료
setInterval() / clearInterval()
setInterval() 메서드는 코드를 일정시간 간격으로 반복실행
clearInterval() 메서드는 setInterval() 메서드를 취소시킴
* setInterval() 기본형
var 참조변수 = setInterval(function(){ 자바스크립트 코드}, 시간간격(ms));
var 참조변수 = setInterval("코드", 시간 간격(ms));
// ex) 3초 간격으로 변수 i의 값을 1씩 증가
var intv = setInterval(function(){i++;}, 3000);
var intv = setInterval("i++", 3000);
* clearInterval() 기본형
clearInterval(참조변수); //참조 변수는 앞의 setInterval()을 참조한 변수
<script>
var addNum = 0;
var subNum = 1000;
var auto = setInterval(function(){ //3초 간격으로 반복 실행 addNum의 값이 1씩 증가
addNum++;
console.log("addNum :" + addNum);
},3000);
var auto2 = setInterval(function(){ //3초 간격으로 반복 실행 subNum의 값이 1씩 감소
subNum--;
console.log("subNum: " + subNum);
},3000);
</script>
<body>
//방문자가 해당 버튼을 클릭하면 setInterval()을 제거한다
<button onclick="clearInterval(auto)">증가 정지</button>
<button onclick="clearInterval(auto2)">감소 정지</button>
</body>
setTimeout() / clearTimeout()
setTimeout() 메서드는 일정 시간이 지나면 코드를 실행하고 종료
setTimeout() 메서드를 조금만 응용하여 재귀 호출을 하면 setInterval() 메서드처럼 사용 가능
clearTimeout() 메서드는 setTimeout() 메서드를 제거
기본형
* setTimeout()
var 참조변수 = setTimeout(function(){ 자바스크립트 코드}, 시간 간격(msc));
var 참조변수 = setTimeout("자바스크립트 코드", 시간간격(ms));
ex) 5초 간격으로 변수 i의 값을 1씩 증가
var tim = setTimeout(function(){i++;},5000);
var tim = setTimeout("i++",5000);
* clearTimeout(참조 변수);
clearTimeout(tim); //tim에 참조되어 있던 setTimeout()을 삭제
screen 객체
screen 객체는 사용자의 모니터 정보(속성)를 제공하는 객체
예를 들어 모니터의 너비나 높이 또는 컬러 표현 bit를 반환
기본형
screen.속성;
screen.width; //모니터의 너빗값을 반환
screen 객체의 속성 종류
종류 | 설명 |
screen.width | 화면의 너빗값을 반환 |
screen.height | 화면의 높잇값을 반환 |
screen.availWidth | 작업 표시줄을 제외한 화면의 너빗값을 반환 |
screen.availHeight | 작업 표시줄을 제외한 화면의 높잇값을 반환 |
screen.colorDepth | 사용자 모니터가 표현 가능한 컬러 bit를 반환 |
location 객체
- location 객체는 사용자 브라우저와 관련된 속성과 메서드를 제공하는 객체
- 현재 URL에 대한 정보(속성)와 새로고침(reload) 메서드를 제공
기본형
location.속성;
location.메서드();
location 객체의 속성 종류
종류 | 설명 |
location.href | 주소 영역의 참조 주소를 설정하거나 URL을 반환 ex) http://www.easypub.co.kr:80/Main/pub#view |
location.hash | URL의 해시값(#에 명시된 값)을 반환 ex) http://www.easypub.co.kr/Main/pub#view |
location.hostname | URL의 호스트 이름을 설정하거나 반환 ex) http://www.easypub.co.kr:80/ |
location.host | URL의 호스트 이름과 포트번호를 반환 ex) http://www.easypub.co.kr:80/ |
location.protocol | URL의 프로토콜을 반환 ex) http://www.easyspub.co.kr:80/ |
location.search | URL의 쿼리(요청값)를 반환 ex) http://www.easyspub.com?pageNum=1&sort=DESC |
location.reload() | 마치 브라우저에서 F5키를 누른 것처럼 새로고침 함 |
history 객체
- history 객체는 사용자가 방문한 사이트의 기록을 남기고 이전 방문 사이트와 다음 방문 사이트로 다시 돌아갈 수 있
는 속성과 메서드를 제공
기본형
history.속성;
history.메서드();
history.메서드(n);
//사용자가 방문한 사이트의 기록을 남긴 총 수량
history.length;
//사용자가 방문한 사이트 중 바로 이전에 방문한 사이트로 이동
history.back();
//사용자가 방문한 사이트 중 두 단계 이전에 방문한 사이트로 이동
history.back(2);
종류 | 설명 |
history.back() | 이전 방문 사이트로 이동 |
history.forward() | 다음 방문 사이트로 이동 |
history.go(이동 숫자) | 이동 숫자에 -2를 입력하면 2단계 이전의 방문 사이트로 이동 |
history.length | 방문 기록에 저장된 목록의 개수를 반환 |
navigator 객체
- navigator 객체는 현재 방문자가 사용하는 브라우저의 정보와 운영체제 정보를 제공하는 객체
기본형
navigator.속성
//크롬 브라우저에서 테스트한 결과
ex) navigator.userAgent;
==> "Mozilla/5.0(Window NT 6.1;Win64; x64)AppleWebKit/537.36(KHTML, like Gecko)
Chrome/60.0.3112.113/Safari/537.36"
1. 기본 플랫폼
2. 운영체제 정보
3. 사용 중인 브라우저의 엔진 이름
4. 사용 중인 브라우저 이름
5. 같은 엔진을 사용중이며 호환 가능한 다른 브라우저
navigator 객체의 속성 종류
종류 | 설명 |
navigator.appCodeName | 현재 브라우저의 코드명을 반환. 현 시점의 모든 브라우저는 "Mozila"를 반환 |
navigator.appName | 현재 브라우저의 이름을 반환. 현 시점의 모든 브라우저는 "Netscape"를 반환 |
navigator.appVersion | 현재 브라우저의 버전 정보를 반환 |
navigator.language | 현재 브라우저가 사용하고 있는 언어를 반환. 한국어를 사용할 경우에는 "ko"를 반환 |
navigator.product | 현재 브라우저의 엔진 이름을 반환. 크롬의 경우는 "Gecko"를 반환 |
navigator.platform | 현재 컴퓨터의 운영체제 정보를 제공. 운영체제가 윈도우이고 시스템 종류가 64비트라도 브라우저가 32비트로 설치되었다면 "Win32"라고 나타남 |
navigator.onLine | 온라인 상태 여부에 대한 정보를 제공. 만일 인터넷이 정상적으로 여결되어 있는 상태라면 true값을 반환 |
navigator.userAgent | 브라우저와 운영체제의 종합 정보를 제공 |
'IT 개발 > JavaScript' 카테고리의 다른 글
06. 제이쿼리 문서 객체 선택자와 조작법 (0) | 2020.01.14 |
---|---|
05. 함수 (0) | 2020.01.10 |
03. 제어문 (0) | 2019.12.22 |
02. 자바스크립트 기초 문법 (0) | 2019.12.18 |
01.자바스크립트 시작하기 (0) | 2019.12.17 |