객체.내장객체
객체 : 객체는 우리 주변에 있는 모든것들. 사람, 사물, 개념, 논리...객체 선언 : 객체는 키 값을 사용하여 속성을 식별. key : value 형식으로 작성.value에는 모든 종류의 자료형이 올 수 있고, 이중에서 함수가 오면 메소드라고 부름
객체선언
<h2>객체 선언</h2>
<p>
객체는 키 값을 사용하여 속성을 식별
key : value 형식으로 작성.
value에는 모든 종류의 자료형이 올 수 있고, 이 중에서 함수가 오면 메소드라고 부름.
</p>
<script>
// 이름, 나이, 취미...
let student = {
name : '김철수',
age : 20,
hobby : ['독서','영화'],
getString : function(){
return this.name+' '+this.age;
},
item : {
name:'샤프',
price : 2600
}
};
let student2 = {};
let student3 = new Object();
//대괄호를 쓰면 항상 string형태
student2['name'] = '김영희';
student2['n'+'a'+'m'+'e'] = '김영희';
// 괄호를 쓰지 않으면 변주가 불가능.
student2.age = 20;
//student2.age+1 = 21;(쓰면 안됨.)
</script>
객체 호출
[]또는 .으로 요소 값에 접근
- 객체에 선언되어 있는 속성에 접근
- 객체에 선언된 배열 속성에 접근
- 객체에 선언된 객체 속성에 접근
- 객체 내부의 함수 실행하기
객체 호출과 반복문
객체는 배열과 다르게 데이터의 순서가 없기 때문에 객체의 모든 속성을 출력할 경우 단순 for문이나 while문으로는 출력이 불가하고, for in문을 사용해야 함
<h2>객체 접근하기</h2>
<script>
//1. 객체에 선언되어 있는 속성에 접근
// document.getElementById('user_id').innerHTML = '아이디';
// let tempVal = document.getElementById('user_id').innerHTML;
console.log(student.name);
console.log(student['name']);
//2. 객체에 선언된 배열 속성에 접근
console.log(student.hobby[0]);
console.log(student['hobby'][0]);
student['hobby'].forEach(v=>console.log(v));
student.hobby.forEach(v=>console.log(v));
//3. 객체에 선언된 객체 속성에 접근
console.log(student.item.name);
console.log(student['item'].name);
// 4. 객체 내부에 함수 실행하기.
console.log(student.getString());
console.log(student['getString']());
// 5. 객체 속성 변수로 접근
let keyName = 'hobby';
//console.log(student.keyName); => 사용불가
console.log(student[keyName]);
// 6. 객체에 있는 모든 속성에 접근하기
// for in 문
for(key in student){
console.log(key, student[key]);
}
</script>
this
객체 내에서 자신의 속성을 호출할때 사용하는 키워드
<h3>this : 객체 내에서 자신의 속성을 호출할때 사용하는 키워드</h3>
<script>
let car = {
detail : {
birth : 2023,
price : 5000,
company : '현대'
},
show : function(){
alert(this.detail.price +'만원 입니다.');
}
};
car['show']();
</script>
함수 활용 객체 생성
함수의 매개변수에 필요한 속성 값을 다 받아서 객체 생성 후 리턴
<h2>함수를 이용해서 객체 생성하기</h2>
<script>
// 학생 3명의 이름, 학년, 반, 번호를 저장
let s = {
name:'김철수',
grade : 1,
classNum : 3,
num : 3
}
let s1 = {
name:'김가남',
grade : 2,
classNum : 10,
num : 11
}
let s2 = {
name:'김영희',
grade : 3,
classNum : 2,
num : 5
}
// 객체를 반환하는 함수를 이용
function getStudent(name, grade, classNum, number){
let obj = {
name : name,
grade : grade,
classNum : classNum,
num : number
};
return obj;
}
객체 속성 추가 및 삭제
속성 및 메소드를 동적으로 추가/삭제 가능
//객체에 새로운 속성 추가, 삭제하기
let objTest = {};
objTest.number = 100;
console.log(objTest);
objTest['testFunc'] = function(){
console.log('가자~');
}
delete(objTest.number);
console.log(objTest);
</script>
<h3>this : 객체 내에서 자신의 속성을 호출할때 사용하는 키워드</h3>
<script>
let car = {
detail : {
birth : 2023,
price : 5000,
company : '현대'
},
show : function(){
alert(this.detail.price +'만원 입니다.');
}
};
car['show']();
</script>
<h3>객체를 배열에 저장하고 관리하기</h3>
<script>
let persons = [
{
name:'김가남',
grade : 2,
classNum : 10,
num : 11
},
{
name:'김가남',
grade : 2,
classNum : 10,
num : 11
}
];
console.log(persons[0].name);
</script>
Object
모든 기본 내장 객체는 Object객체를 상속. 모든 객체는 기본적으로 Object의 메소드를 다 가지고있음
String
문자열을 저장하는 객체
| 메소드 | 내용 |
| toUpperCase() | 모든 문자 대문자로 변환 |
| toLowerCase() | 모든 문자 소문자로 변환 |
| length() | 글자 개수 조회용 맴버변수 |
| indexOf() | 찾는 문자의 순번(위치) 리턴 |
| lastIndexOf() | 뒤에서부터 찾는 문자의 순번 리턴 |
| charAt() | 찾는 위치의 문자 리턴 |
| substring() | 값을 일부분만 리턴 |
| split() | 토큰 문자로 분리한 문자열 배열 리턴 |
<script>
// 이름, 나이, 취미...
let student = {
name : '김철수',
age : 20,
hobby : ['독서','영화'],
getString : function(){
return this.name+' '+this.age;
},
item : {
name:'샤프',
price : 2600
}
};
let student2 = {};
let student3 = new Object();
//대괄호를 쓰면 항상 string형태
student2['name'] = '김영희';
student2['n'+'a'+'m'+'e'] = '김영희';
// 괄호를 쓰지 않으면 변주가 불가능.
student2.age = 20;
//student2.age+1 = 21;(쓰면 안됨.)
</script>
Number 객체
<h3>Number 객체가 제공하는 함수</h3>
<p>
1. Number.MAX_VALUE : 자바스크립트가 나타낼 수 있는 최대 숫자<br>
2. Number.MIN_VALUE : 자바스크립트가 나타낼 수 있는 최소 숫자<br>
3. Number.isInteger(숫자) : 괄호 안 숫자가 정수인지 실수인지 확인<br>
4. Number.isNaN(숫자) : 괄호 안에 쓴 숫자가 NaN(not a number)인지 확인
</p>
<script>
console.log(Number.MAX_VALUE);
console.log(Number.MIN_VALUE);
let num = 393938900958092352;
if(num > Number.MAX_VALUE){
console.log('자바스크립트가 수용할 수 없는 숫자값입니다.');
}
//isInteger : 정수이면 true, 실수이면 false
console.log(Number.isInteger(87));
console.log(Number.isInteger(87.43));
console.log(Number.isNaN('팔십칠'));
</script>
Math 객체
<h3>Math 객체가 제공하는 함수</h3>
<p>
수학적 계산을 할때 사용<br>
랜덤값(난수)을 출력할때 사용!!<br>
1. Math.floor() : 소수점 자리를 버림<br>
2. Math.round() : 소수점 반올림 <br>
3. Math.ceil() : 소수점 올림<br>
4. Math.random() : 0~1(1미포함) 사이의 구간에서 난수를 생성
</p>
<script>
console.log(Math.floor(1234.5678));
console.log(Math.ceil(1234.2678));
console.log(Math.round(1234.3678));
// 1~10사이의 숫자를 하나 뽑고 싶다.
// 도달하고 싶은 범위까지 숫자를 곱해줍니다. (10)
// 시작점만큼 더해줍니다. (1)
console.log(Math.floor(Math.random()*10+1));
</script>
<script>
// 길이가 10인 변수를 하나 생성한다
let arrRan = new Array(10);
// for구문을 사용
for(let i = 0 ; i < arrRan.length ;i++){
let numRan = Math.floor(Math.random()*10+1);
arrRan[i] = numRan;
}
alert(arrRan);
</script>
Date 객체
| 메소드 | 내용 |
| get/setFullYear() | 년도 반환 / 년도 저장 |
| get/setMonth() | 월 (0:1월 ~ 11:12월) |
| get/setDate() | 일 (1일 ~ 31일) |
| get/setDay() | 요일 (0:일요일 ~ 6:토요일) |
| get/setHours() | 시간 (0~23시) |
| get/setMinutes | 분 (0~59분) |
| get/setSeconds | 초 |
| get/setMilliseconds() | 밀리세컨초 (0~999) |
| get/getTimezoneOffset() | 표준시와 현재지역 차이 |
| get/setTime() | 1970-01-01 자정 기준으로 밀리세컨드 |
<h3>Date객체</h3>
<p>
함수의 예시로 보여드린적이 있음.
날짜의 년, 월, 일, 시, 분, 초를 출력
</p>
<script>
let today;
today = new Date();
console.log(today.getFullYear());
console.log(today.getMonth()+1);
console.log(today.getDate());
console.log(today.getHours());
console.log(today.getMinutes());
console.log(today.getSeconds());
today = new Date(2022,8-1,22);
console.log(today);
</script>
내장객체
<h1>내장객체(Object)</h1>
<p>
자바스크립트가 기본적으로 가지고 있으면서 제공해주는 기능
우리가 만드는 객체 : 사용자 정의 객체
</p>
<h2>String, Number, Math, Date</h2>
<h3>String객체 : 문자열을 저장하는 객체</h3>
<p>
'' 혹은 ""
</p>
<p>
String객체가 제공하는 함수<br>
1. 영문자를 대문자로 변경 : toUpperCase();<br>
2. 영문자를 소문자로 변경 : toLowerCase();<br>
3. 문자열의 길이 확인 : length<br>
4. 문자열에서 특정 인덱스에 있는 문자를 출력하기 : charAt();<br>
5. 문자열에서 (앞에서부터) 특정 문자를 찾아 인덱스를 반환 : indexOf();<br>
6. 문자열에서 (뒤에서부터) 특정 문자를 찾아 인덱스를 반환 : lastIndexOf();<br>
7. 문자열에서 특정 문자를 잘라내는 함수 : substring();<br>
8. 문자열을 특정 구분자 기준으로 잘라서 배열로 만들주는 함수 : split();<br>
9. 문자열에 특정 문자가 포함되어 있는지 확인하는 함수 : includes();<br>
10. 지정된 만큼의 문자열을 다른 값으로 변경하는 함수 : replace();<br>
11. 양쪽끝 공백을 제거해주는 함수 : trim();
</p>
<h4>toUpperCase와 toLowerCase의 활용</h4>
<select id="fruit" onchange="changeFruit();">
<option value="">선택</option>
<option value="APPLE ">apple</option>
<option value="banana">banana</option>
<option value="orange">orange</option>
</select>
<script>
let changeFruit = () =>{
let selectFruit = document.querySelector('#fruit').value;
//selectFruit = selectFruit.toUpperCase();
selectFruit = selectFruit.toLowerCase();
selectFruit = selectFruit.trim();
switch(selectFruit){
case 'apple' : console.log('사과!!');break;
case 'banana' : console.log('바나나!');break;
case 'orange': console.log('오렌지!!');break;
}
};
</script>
실습문제
<h3>예제</h3>
<label for="1">대문자 만들기</label>
<input type="text" id="1">
<br>
<label for="2">소문자 만들기</label>
<input type="text" id="2">
<br>
<label for="3">문장의 길이</label>
<input type="text" id="3">
<br>
<label for="4">알파벳 'p'의 위치</label>
<input type="text" id="4">
<br>
<label for="5">뒤에서부터 찾았을 때 가장 가까운 'm'의 위치</label>
<input type="text" id="5">
<br>
<label for="6">7번째 자리에 있는 알파벳</label>
<input type="text" id="6">
<br>
<label for="7">12번째 자리부터 5개의 알파벳</label>
<input type="text" id="7">
<br>
<label for="8">띄어쓰기 기준으로 단어 자르기</label>
<textarea id="8"></textarea>
<button onclick="stringTest();">String객체 함수 연습하기</button>
<script>
let stringTest = () =>{
let text = 'Lorem ipsum dolor sit amet';
document.getElementById('1').value = text.toUpperCase();
document.getElementById('2').value = text.toLowerCase();
document.getElementById('3').value = text.length;
document.getElementById('4').value = text.indexOf('p');
document.getElementById('5').value = text.lastIndexOf('m');
document.getElementById('6').value = text.charAt(7);
document.getElementById('7').value = text.substring(12,5);
let textSplit = text.split(' ');
for(let i = 0 ; i < textSplit.length ; i++){
document.getElementById('8').value += textSplit[i]+'\n';
}
console.log('동해물과'+'\n'+'백두산이');
}
</script>
<script>
let temp = 'BTS,봉준호,손흥민,제이팍';
let tempArr = temp.split(',');
//includes : 매개변수에 쓴 문자가 현재 문자 전체에 있는지 확인
console.log(temp.includes('BTS'));
if(temp.includes('BTS')){
temp = temp.replace('BTS','뉴진스');
console.log(temp);
}
</script>
문자열 인코딩(암호화) 함수
웹 통신 시 유니코드 문자는 오작동을 일으킬 문제가 있어 인코딩 필요
<h3>문자열 인코딩(암호화) 함수</h3>
<p>
encodeURI/decodeURI : 알파벳 숫자 - _ . ! ~ * ' () ; / ? : @ & = + $ , #<br>
encodeURIComponent/decodeURIComponent: 알파벳, 숫자, - _ . ! ~ * ' ( )<br>
</p>
<button onclick="checkEncode();">인코딩 결과보기</button>
<div id="result2"></div>
<script>
function checkEncode(){
let encode = encodeURI(url);
let encodeCompo = encodeURIComponent(url);
const area = document.querySelector('#result2');
area.innerHTML += '원본 : '+url+'<br>';
area.innerHTML += 'encodeURI : '+encode +'<br>';
area.innerHTML += 'decodeURI : '+decodeURI(encode)+'<br>';
area.innerHTML += 'encodeURIComponent : '+encodeCompo+'<br>';
area.innerHTML += 'decodeURIComponent : '+decodeURIComponent(encodeCompo);
}
</script>
'JavaScript & JQuery' 카테고리의 다른 글
| JQuery serialize()를 사용하는 이유 (0) | 2024.03.07 |
|---|---|
| JavaScript(6) (0) | 2023.08.27 |
| JavaScript(5) (0) | 2023.08.27 |
| JavaScript(4) (2) | 2023.08.27 |
| JavaScript(3) (2) | 2023.08.27 |