dev-story

[JavaScript] #05_ 객체(Object) 본문

[프론트엔드]/JavaScript

[JavaScript] #05_ 객체(Object)

진코딩 2022. 4. 14. 22:42

객체 선언 및 호출

중괄호{ }를 사용하여 객체를 생성하고, 속성에는 모든 자료형이 올 수 있다.
객체는 키 값을 사용하여 속성을 식별한다.

중괄호{ }내부에   속성명(키): 값  형태로 작성한다.
(작성형식이 Map과 비슷. 내부에 작성한 속성의 순서가 유지되지 않는다는 것도 체크포인트)

		function test1(){
			var product = {
					pName:'Dry Mango', 
					type: 'pickle',
					ingredient:['mango', 'sugar'],
					origin:'Philippines'
			};

 

객체 안의 속성 접근하기

1) 객체명['속성명']
속성명(키)에 띄어쓰기를 사용했을 경우에는 이 방법으로만 가능

console.log(product['pName']);

2) 객체명.속성명
속성명에 띄어쓰기가 포함되어 있으면 이 방법은 불가능하다.

console.log(product.pName);

 

객체의 메소드 속성

---> 해당 코드에서의 song이 함수를 가지고 있기 때문에 메소드와 같은 역할을 하고 있는 것.

** 객체안의 함수안에서 함수 밖의 객체안에 있는 속성을 호출할때는 반드시 앞에 this.를 붙여야 한다. **

** this를 붙이지 않을 경우에는 객체안의 함수안에 있는 속성을 나타낸다.

 

객체와 반복문

객체의 속성을 살펴볼때는 단순 for문으로는 불가능하고 for in문을 사용해야 한다.
** for in문에서 객체를 가지고 사용할때는 앞에 있는 변수에 담기는 값은 객체의 키가 담긴다.
(!!배열을 가지고 사용할 때는 배열의 인덱스가 담긴다!!)

 

객체 속성 추가 및 제거

처음 객체 생성 이후 속성을 추가/제거하는 것을 '동적으로 속성을 추가/제거한다'라고 한다.

 

속성 추가

객체명.키 = 값          -->객체에 해당 키의 속성을 만들고 안에 값을 집어넣어줌.
객체명['키'] = 값

보기 편하게 toString()를 출력해보자.

toString안에 있는 내용(함수 코드 내용 전부)이 전부 출력이 된다.

코드 내용이 궁금한 것은 아니므로 키값이 toString이 아닐때만 출력하게끔 조건을 걸어준다.

속성 제거

delete(객체.속성)

 

속성에 접근하여 연산값 넣기

<button onclick='test5();'>실행확인</button>
<script>
	function test5(){
		var student0 = {name: '강건강', java:85, oracle:13, HTML:94, CSS:53, js:99};
		var student1 = {name: '남나눔', java:39, oracle:75, HTML:14, CSS:78, js:47};
		var student2 = {name: '도대담', java:42, oracle:87, HTML:85, CSS:14, js:74};
		var student3 = {name: '류라라', java:85, oracle:15, HTML:95, CSS:41, js:55};
		var student4 = {name: '문미미', java:34, oracle:94, HTML:45, CSS:81, js:85};
		var student5 = {name: '박보배', java:37, oracle:56, HTML:75, CSS:83, js:68};
		var student6 = {name: '송성실', java:94, oracle:34, HTML:24, CSS:65, js:86};
		var student7 = {name: '윤예의', java:66, oracle:45, HTML:22, CSS:89, js:98};
		var student8 = {name: '정재주', java:13, oracle:61, HTML:94, CSS:78, js:79};
		var student9 = {name: '차청춘', java:95, oracle:65, HTML:74, CSS:97, js:66};
			
		var students = [];	//비어있는 배열 생성
		students.push(student0);	//배열에 값 넣기
		students.push(student1);
		students.push(student2);
		students.push(student3);
		students.push(student4);
		students.push(student5);
		students.push(student6);
		students.push(student7);
		students.push(student8);
		students.push(student9);
			
		console.log(students);		//배열에 객체들이 들어감. 객체 배열
			
		for(var i in students){		//i에는 배열의 인덱스가 들어간다.
			students[i].getSum = function(){	//students[i] ==> 배열안에 있는 i번째에 대한 객체값
				var sum = 0;
				for(var key in this){
					if(key != 'name' && key != 'getSum' && key != 'getAvg'){
						sum += students[i][key];	
						//students[i][key]  ==> students배열의 i번째 객체의 key속성값
					}	//key가 name, getSum, getAvg가 아닌 i번째 객체의 안에 있는 속성값들을 다 더하겠다.
				}
					
				return sum;
			}
				
			students[i].getAvg = function(){
				return this.getSum() / 5;
			}
		}
			
		for(var i in students){
			console.log('이름 : ' + students[i].name + ", 총점 : " + students[i].getSum()
					+ ", 평균 : " + students[i].getAvg());
		}
	}
</script>

728x90

'[프론트엔드] > JavaScript' 카테고리의 다른 글

[JavaScript] #07_ BOM  (0) 2022.04.14
[JavaScript] #06_ window객체  (0) 2022.04.14
[JavaScript] #04_ 함수(Function)  (0) 2022.04.13
[JavaScript] #03_배열(Array)  (0) 2022.04.13
[JavaScript] #02_ 기본 문법  (0) 2022.04.11
Comments