코딩하렴

javascript 생성자 함수를 활용한 객체 생성

by 으렴

일단 객체를 리턴해주는 함수를 만들어보자

function makeObject(name,kor,eng){
    return {
        name:name,
        kor:kor,
        eng:eng,
        getTotal:function(){
            return this.kor+this.eng
        },
        outPut:function(){
            console.log(this.name,this.kor,this.eng,this.getTotal())
        }
    }
}

이렇게 makeObject라는 함수를 만들고

const arr = []

arr.push(makeObject('dog',67,5))
arr.push(makeObject('cat',23,6))
arr.push(makeObject('tut',86,4))
arr.push(makeObject('miu',34,1))
arr.push(makeObject('eit',12,2))

배열을 선언후 배열안에 함수를 불러 리턴시킨 객체를 넣어주었다.

 

이렇게 해서 객체를 생성하는 방법이 있고

 

생성자 함수를 만들어 new 생성을통해 만들어주는 경우가 있다.

 

생성자 함수를 만들어보자

function ff(name,kor,eng){
    this.name = name
    this.kor = kor
    this.eng = eng
    this.getTotal=function(){
        return this.kor+this.eng
    }
    this.outPut = function (){
        console.log(this.name,this.kor,this.eng,this.getTotal())
    }
}

이런식으로 생성자함수를 만들어준뒤

const ar = []

ar.push(new ff(`cat1`,3,36))
ar.push(new ff(`cat2`,5,29))
ar.push(new ff(`cat3`,4,67))
ar.push(new ff(`cat4`,1,85))
ar.push(new ff(`cat5`,8,85))
ar.push(new ff(`cat6`,7,54))
ar.push(new ff(`cat7`,6,82))
ar.push(new ff(`cat8`,2,45))

배열을 만들며 그 안에 넣어준다.

 

근데 이 함수를 new형식으로 만들어 넣어주어야 한다.

ar.sort((o1,o2)=>{
    return o2.kor-o1.kor
})

for (let i = 0; i < ar.length; i++) {
    ar[i].outPut()   
    //console.log(ar[i]);
}

걍 kor을 기준으로 sort해서 찍어보자

cat5 8 85 93
cat6 7 54 61
cat7 6 82 88
cat2 5 29 34
cat3 4 67 71
cat1 3 36 39
cat8 2 45 47
cat4 1 85 86

걍 일케 나오긴한다.

 

객체를 리턴하는방법 생성자 함수를 만드는 방법 두가지가 있는데

 

어느 것을 더 선호하냐 하면 생성자 함수 쪽이다.

 

하지만 둘다 많이쓰이므로 둘다 익히도록

사이트의 정보

코딩하렴

으렴

활동하기