728x90
객체
- 메모리에 등록된 데이터(자료구조, 함수)
- 속성과 기능을 가지고 있다.(프로퍼티, 메서드)
- 변수에 대입된 객체는 참조 변수라고 한다.
참조변수
- 메모리에 생성된 객체 주소를 생성된 변수가 참조하는것
- 생성된 객체가 여러 변수에 대입되더라도 대입된 변수들은 같은 주소를 가지고 있으며, 이 변수들 중 객체의 값을 변경 할 경우모든 변수들은 가같은 주소를 참조 하고 있음으로 변경된 동일한 결괏값을 가진다.
//기본 자료형
//원시 타입 -> 기본 자료형
//원시 타입은 값을 복제하여 대입한다.
var n1 = 100;
var n2 = n1;
console.log(n1, n2, '기본 자료형');
n2 = 200;
console.log(n1, n2, '기본 자료형'); //n2의 값만 바뀜
//객체
//참조타입 -> 객체주소
//객체 주소를 복제하여 대입한다.
var arr1 = [100];
var arr2 = arr1;
console.log(arr1, arr2, '객체');
arr2[0] = 1000;
console.log(arr1, arr2, '객체'); //n1과 n2의 값이 둘 다 바뀜
객체 선언
- 객체 내부에는 키와 값 한쌍을 이루어 데이터를 저장 할 수 있다.
- 객체 선언은 {}, new Object();로 할 수 있다.
- 객체에 저장된 함수는 메서드라고 한다.
- 객체 안에 if , ' ; '못씀 -> if 쓸려면 메서드 안에
- 멤버 여러개 쓸땐 ' , '로 나열하기
빈 객체 선언하기 |
var obj01 = {}; var obj02 = new Object(); |
값을 저장과 동시에 객체 선언하기 (키 : 값) |
var obj03 = { name:'홍길동', age:20 }; |
//생성된 객체의 속성에 접근하기
var userName = obj03.name;
console.log(userName);
console.log(obj03['age']);
//생성된 객체에 값 대입하기
//동일한 키가 있다면 값 교체
//동일한 키가 없다면 키 생성하면서 값 저장
var obj04 = {};
obj04.name = '이순신';
obj04['addr']='전주시';
console.log(obj04);
//객체에 함수 저장하기(메서드)
//1.
var obj05 ={
myFn : function(){
console.log('메서드 호출')
}
}
//2.
obj05.myFn2 = function(){
console.log('메서드 호출2');
}
//객체의 메서드에 접근했을 경우 함수 코드 반환
console.log(obj05.myFn);
//실행을 하기위해서는 ();
console.log(obj05.myFn());
this 키워드 > 내 멤버에 접근하려면 무조건 써야함
var obj06 = {
name: '홍길동',
getName: function(){
console.log(this, 'this 키워드 확인');
return this.name;
}
}
var obj06Name = obj06.getName();
console.log(obj06Name, 'this키워드로 속성 접근 후 반환');
더보기
실습1. 아래의 결과물이 나올 수 있도록 코드를 완성 하여라.
obj01.myArray.push('홍길동');
obj01.myArray.push('이순신');
obj01.myArray.push('유관순');
console.log(obj01.myArray, '결괏값>["홍길동","이순신","유관순"]');
풀이
var obj01 = {
myArray: []
};
결과
실습2. 아래의 결과물이 나올 수 있도록 코드를 완성 하여라.
obj2.setName('홍길동');
console.log(obj2.getName(), '결괏값-> 홍길동');
풀이
var obj2 = {
name : null,
setName : function(n){
this.name = n;
},
getName : function(){
return this.name; //자바와 다르게 내 멤버에 접근하려면 무조건 this써야함
}
};
결과
실습3. 아래의 결과물이 나올 수 있도록 코드를 완성 하여라.
obj3.arr.push(10);
obj3.arr.push(20);
obj3.arr.push(30);
obj3.arr.push(40);
console.log(obj3.sum(), '결괏값-> 100');
풀이
var obj3 = {
arr : [],
sum : function(){
var sum=0;
for(var i=0; i<this.arr.length; i++){
sum += this.arr[i];
}
return sum;
}
};
결과
실습4. 학생들의 점수 중 제일 높은 학생명의 결괏값을 가지고와 출력하여라.
못풀고 선생님 풀이...
var obj4 ={
scoreArray : null,
getMaxAvgScoreName : function(){
}
};
obj4.scoreArray = [
{studentName : '홍길동', score: 70},
{studentName : '이순신', score: 90},
{studentName : '유관순', score: 40}
];
console.log(obj4.getMaxAvgScoreName(), '결괏값->이순신');
풀이
var obj4 ={
scoreArray : null,
getMaxAvgScoreName : function(){
var maxScore = 0;
var maxScoreStudentName;
for(var i=0; i< this.scoreArray.length; i++) {
if(maxScore < this.scoreArray[i].score){
maxScore = this.scoreArray[i].score;
maxScoreStudentName = this.scoreArray[i].studentName;
}
}
return maxScoreStudentName;
}
};
결과
실습5. 회원중 전주에 거주지가 있는 회원의 수를 구하여 출력하도록 하여라
var userInfoArray = [
{userName :'홍길동', userAddr:'전주'},
{userName :'고길동', userAddr:'익산'},
{userName :'유관순', userAddr:'군산'},
{userName :'홍길순', userAddr:'전주'},
{userName :'둘리', userAddr:'전주'},
];
풀이
var count=0;
for(var i=0; i<userInfoArray.length; i++){
if(userInfoArray[i].userAddr=='전주'){
count++;
}
}
console.log(count, '전주 회원 수');
결과
실습6. 아래의 결괏값이 나올 수 있도록 코드를 완성시켜라.
function scoreInfo(scoreObj){
}
var result = scoreInfo([20,30,40,50,60,70,80,90]);
console.log(result, '결괏값->{min: 20, max: 90, avg: 55}')//결과가 객체로 나옴
풀이
function scoreInfo(scoreObj){
var sum = 0;
var re = {
min: scoreObj[0],
max: 0,
avg: 0
}
for(var i=0; i<scoreObj.length; i++){
if(re.min > scoreObj[i]){
re.min = scoreObj[i];
}
if(re.max < scoreObj[i]){
re.max = scoreObj[i]
}
sum += scoreObj[i];
}
re.avg = sum / scoreObj.length;
return re;
}
결과
선생님풀이
function scoreInfo(scoreObj){
var min = scoreObj[0];
var max = 0;
var avg = 0;
var sum = 0;
for(var i=0; i<scoreObj.length; i++){
sum += scoreObj[i];
if(max < scoreObj[i]){
max = scoreObj[i];
}
if(min > scoreObj[i]){
min = scoreObj[i];
}
}
avg = sum / scoreObj.length;
return {min: min, max: max, avg: avg};
}
'{ "Hello World!" }; > JavaScript/jQuery' 카테고리의 다른 글
js/ 티스토리 스킨 getElement 이용해보기 (0) | 2021.12.26 |
---|---|
(JavaScript) 객체 생성자 함수, 프로토타입 (0) | 2021.12.23 |
(JavaScript) 함수 (0) | 2021.12.15 |
(JavaScript) 제어문 - 조건문,선택문,반복문 (0) | 2021.12.15 |
(JavaScript) 기초 문법, 변수, 연산자 (0) | 2021.12.12 |