1. 객체 개요

- 객체는 키(식별자 또는 문자열)와 값(속성)으로 이루어 짐

- { } 중괄호로 객체 생성

- 객체의 속성 값에 접근할 때 키로 접근

- 객체의 키로 식별자가 아닌 문자를 사용했을 때는 무조건 대괄호를 사용하여 접근


<!-- object.html -->
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>object</title>
<script type="text/javascript">
	var phone = {
			name: 'iPhone 5S',
			manufacturer: 'apple',
	};
	
	alert('phone.name : ' + phone.name + "\n" + 'phone.manufacturer : ' + phone.manufacturer);
</script>
</head>
<body>
</body>
</html>




2. 속성과 메서드

- 속성(property) : 객체 내부에 있는 값

- 객체 속성은 모든 형태의 자료형을 가질 수 있음

- 메서드(method) : 객체의 속성 중 함수 자료형인 속성

- 메서드 내에서 자기 자신이 가진 속성이라는 것을 표시할 때는 this 키워드를 사용


<!-- object2.html --> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>object2</title> <script type="text/javascript"> var object = {     number: 123,     string: 'Gz',     boolean: true,     array: [12, 34],     method: function() {} }; alert(     'object.number : ' + typeof(object.number) + "\n"     + 'object.string : ' + typeof(object.string) + "\n"     + 'object.boolean : ' + typeof(object.boolean) + "\n"     + 'object.array : ' + typeof(object.array) + "\n"     + 'object.method : ' + typeof(object.method) ); var exercise = {     name: 'Gz',     play: function(sports) {          alert(this.name + '이(가) ' + sports + ' 을(를) 합니다.');     } }; exercise.play('축구'); </script> </head> <body> </body> </html>




3. 객체와 반복문

- 객체의 속성을 사용하기 위해서 for in 반복문을 사용

- for in 반복문에 객체를 넣으면 객체의 속성 개수 만큼 반복문을 실행


<!-- object3.html -->
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>object3</title>
<script type="text/javascript">
	var phone = {
			name: 'iPhone 5S',
			manufacturer: 'apple',
			price: 540000
	};
	
	var output = '';
	for (var i in phone) {
		output += '* ' + i + ' : ' + phone[i] + '\n';
	}
	alert(output);
</script>
</head>
<body>
</body>
</html>


4. 객체 관련 키워드

- in 키워드와 with 키워드



4.1. in 키워드

- for 키워드와 별도로 사용하면 객체 안에 해당 키의 존재 여부를 확인 가능

- 키가 존재하면 true를 리턴


<!-- object4.html -->
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>object4</title>
<script type="text/javascript">
	var output = '';
	var student = {
		name: 'Gz',
		kor: 99,
		eng: 88,
		math: 77
	};
	
	output += "'name' in student: " + ('name' in student) + '\n';
	output += "'gender' in student: " + ('gender' in student) ;
	
	alert(output);
</script>
</head>
<body>
</body>
</html>




4.2. with키워드

- 복잡하게 사용해야 하는 코드를 짧게 줄여줌

- with 키워드를 사용하는 객체의 속성이름과 외부 변수의 이름이 같으면 객체의 속성을 우선


<!-- object6.html -->
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<script type="text/javascript">
	var student = {
			name: 'Gz',
			kor: 99,
			eng: 88,
			math: 77
	};

	var output = '';
	
	/*
	output += 'name : ' + student.name + '\n';
	output += 'kor : ' + student.kor + '\n';
	output += 'eng : ' + student.eng + '\n';
	output += 'math : ' + student.math + '\n';
	output += '총점 : ' + (student.kor + student.eng + student.math);
	*/
	
	with (student) {
		output += 'name : ' + name + '\n';
		output += 'kor : ' + kor + '\n';
		output += 'eng : ' + eng + '\n';
		output += 'math : ' + math + '\n';
		output += '총점 : ' + (kor + eng + math);
	}
	
	alert(output);
</script>
<title>object6</title>
</head>
<body>
</body>
</html>




5. 객체의 속성 추가와 제거

- 객체의 속성을 동적으로 추가하거나 제거




5.1. 속성 추가


<!-- object6.html -->
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>object6</title>
<script type="text/javascript">
	var student = {};
	
	student.name = 'Gz';
	student.kor = 99;
	student.eng = 88;
	student.math = 77;
	student.toString = function() {
		var output = '';
		for (var i in this) {
			if (i != 'toString') {
				output += i + ' : ' + this[i] + '\n';
			} // if
		} // for
		return output;
	};
	
	alert(student.toString());
</script>
</head>
<body>
</body>
</html>



5.2. 속성 제거

- 동적으로 객체의 속성을 제거할 때는 delete 키워드를 사용

- delete 키워드 뒤에 삭제 할 객체의 속성을 입력


<!-- object7.html -->
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>object7</title>
<script type="text/javascript">
	var student = {};
	
	student.name = 'Gz';
	student.kor = 99;
	student.eng = 88;
	student.math = 77;
	student.toString = function() {
		var output = '';
		for (var i in this) {
			if (i != 'toString') {
				output += i + ' : ' + this[i] + '\n';
			} // if
		} // for
		return output;
	};
	
	delete (student.math);
	
	alert(student.toString());
</script>
</head>
<body>
</body>
</html>




6. 객체와 배열을 사용한 데이터 관리


<!-- object8.html --> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>object8</title> <script type="text/javascript"> var student = []; student.push({name: 'student1', kor: 99, math: 99, eng: 99}); student.push({name: 'student2', kor: 88, math: 88, eng: 88}); student.push({name: 'student3', kor: 77, math: 77, eng: 77}); student.push({name: 'student4', kor: 66, math: 66, eng: 66}); student.push({name: 'student5', kor: 55, math: 55, eng: 55}); student.push({name: 'student6', kor: 44, math: 44, eng: 44}); for (var i in student) { student[i].getSum = function() { return this.kor + this.math + this.eng; } student[i].getAvg = function() { return this.getSum() / 4; } } var output = 'name ---------- sum ---------- avg\n'; for (var i in student) { with (student[i]) { output += name +' ---------- ' + getSum() + ' ---------- ' + getAvg() + '\n'; } } alert(output); </script> </head> <body> </body> </html>


+ Recent posts