JS에선 객체 또한 하나의 변수처럼 취급할 수 있다고 이해했다.


그런 이유로 배열을 생성하고 값을 집어넣을 때


객체를 넣을 수 있다는 말이다.


그리고 여지껏 값을 직접 입력했는데 생성자를 통해서 값을 설정 할 수 있다.


new 키워드를 사용한다.


예제를 통해 배열에 어떻게 집어넣는지 생성자를 어떻게 쓰는지 확인해보자


<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<style type="text/css">
	.area{
		height: 250px; 
		border: 1px solid black;
		background: lightgray;
	}
</style>
</head>
<body>
	<h1>객체 배열</h1>
	<h3>객체와 배열을 사용한 데이터 관리</h3>
	<button onclick="test1();">실행확인</button>
	<div id="area1" class="area"></div>
	
	<script type="text/javascript">
		function test1() {
			var student0 = {
					name:'이르음',
					java:Math.floor(Math.random() * 100) + 1,
					oracle:Math.floor(Math.random() * 100) + 1,
					HTML5:Math.floor(Math.random() * 100) + 1,
					CSS3:Math.floor(Math.random() * 100) + 1,
					javaScript:Math.floor(Math.random() * 100) + 1
			}
			var student1 = {
					name:'이르음1',
					java:Math.floor(Math.random() * 100) + 1,
					oracle:Math.floor(Math.random() * 100) + 1,
					HTML5:Math.floor(Math.random() * 100) + 1,
					CSS3:Math.floor(Math.random() * 100) + 1,
					javaScript:Math.floor(Math.random() * 100) + 1
			}
			var student2 = {
					name:'이르음2',
					java:Math.floor(Math.random() * 100) + 1,
					oracle:Math.floor(Math.random() * 100) + 1,
					HTML5:Math.floor(Math.random() * 100) + 1,
					CSS3:Math.floor(Math.random() * 100) + 1,
					javaScript:Math.floor(Math.random() * 100) + 1
			}
			var student3 = {
					name:'이르음3',
					java:Math.floor(Math.random() * 100) + 1,
					oracle:Math.floor(Math.random() * 100) + 1,
					HTML5:Math.floor(Math.random() * 100) + 1,
					CSS3:Math.floor(Math.random() * 100) + 1,
					javaScript:Math.floor(Math.random() * 100) + 1
			}
			var student4 = {
					name:'이르음4',
					java:Math.floor(Math.random() * 100) + 1,
					oracle:Math.floor(Math.random() * 100) + 1,
					HTML5:Math.floor(Math.random() * 100) + 1,
					CSS3:Math.floor(Math.random() * 100) + 1,
					javaScript:Math.floor(Math.random() * 100) + 1
			}
			var student5 = {
					name:'이르음5',
					java:Math.floor(Math.random() * 100) + 1,
					oracle:Math.floor(Math.random() * 100) + 1,
					HTML5:Math.floor(Math.random() * 100) + 1,
					CSS3:Math.floor(Math.random() * 100) + 1,
					javaScript:Math.floor(Math.random() * 100) + 1
			}
			var student6 = {
					name:'이르음6',
					java:Math.floor(Math.random() * 100) + 1,
					oracle:Math.floor(Math.random() * 100) + 1,
					HTML5:Math.floor(Math.random() * 100) + 1,
					CSS3:Math.floor(Math.random() * 100) + 1,
					javaScript:Math.floor(Math.random() * 100) + 1
			}
			var student7 = {
					name:'이르음7',
					java:Math.floor(Math.random() * 100) + 1,
					oracle:Math.floor(Math.random() * 100) + 1,
					HTML5:Math.floor(Math.random() * 100) + 1,
					CSS3:Math.floor(Math.random() * 100) + 1,
					javaScript:Math.floor(Math.random() * 100) + 1
			}
			var student8 = {
					name:'이르음8',
					java:Math.floor(Math.random() * 100) + 1,
					oracle:Math.floor(Math.random() * 100) + 1,
					HTML5:Math.floor(Math.random() * 100) + 1,
					CSS3:Math.floor(Math.random() * 100) + 1,
					javaScript:Math.floor(Math.random() * 100) + 1
			}
			var student9 = {
					name:'이르음9',
					java:Math.floor(Math.random() * 100) + 1,
					oracle:Math.floor(Math.random() * 100) + 1,
					HTML5:Math.floor(Math.random() * 100) + 1,
					CSS3:Math.floor(Math.random() * 100) + 1,
					javaScript:Math.floor(Math.random() * 100) + 1
			}
			
			
			// 배열 선언
			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 = 0; i < students.length; i++){
				students[i].getSum = function() {
					return this.java + this.oracle + this.HTML5 + this.CSS3 + this.javaScript;
				}
				
				students[i].getAvg = function() {
					return students[i].getSum() / 5;
				}
			}
			
			// 모든 학생의 정보가 담긴 배열의 메소드를 통해 총점과 평균 출력
			for(var i in students){
				with(students[i]){
					document.getElementById("area1").innerHTML += "이름 : " + name + ", 총점 : " + getSum() + ", 평균 : " + getAvg() + "<br>";
				}
			}
		}
	</script>
	
	<hr>
	
	<h3>생성자 함수</h3>
	<p>new 키워드를 사용해서 객체를 생성할 수 있는 함수를 의미한다.</p>
	<button onclick="test2();">실행 확인</button>
	<div id="area2" class="area"></div>
	
	<script type="text/javascript">
		function Student(name, java, oracle, html5, css3, javascript) {
			// 속성 정의
			this.name = name;
			this.java = java;
			this.oracle = oracle;
			this.html5 = html5;
			this.css3 = css3;
			this.javascript = javascript;
			
			// 메소드 정의
			this.getSum = function(){
				return this.java + this.oracle + this.html5 + this.css3 + this.javascript;
			}
			this.getAvg = function(){
				return this.getSum() / 5;
			}
			this.toString = function() {
				return "이름 : " + this.name + ", 총점 : " + this.getSum() + ", 평균 : " + this.getAvg() + "<br>";
			}
			
		}
	
		function test2(){
			var student = new Student(prompt('이름을 입력하세요.'),
					parseInt(prompt('자바 점수를 입력하세요.')),
					parseInt(prompt('오라클 점수를 입력하세요.')),
					parseInt(prompt('html5 점수를 입력하세요.')),
					parseInt(prompt('css3 점수를 입력하세요.')),
					parseInt(prompt('javascript 점수를 입력하세요.')))
			var area2 = document.getElementById("area2")
			
			area2.innerHTML += student;
			
		}
	</script>

	
</body>
</html>


+ Recent posts