16. 프로토타입

2024. 11. 4. 16:08자바스크립트(Javascript)

프로토타입
        - 자바스크립트의 모든 객체는 프로토타입이라는 객체를 가지고 있음
        - 모든 객체는 프로토타입으로부터 프로퍼티와 프로퍼티 메서드를 상속 받음
        - 모든 객체는 최소한 하나 이상의 다른 객체로부터 상속을 받으며, 상속되는 정보를 
        제공하는 객체, 즉 프로토타입이라고 함

 상속
        - 클래스 기반의 객체지향 언어와 다름
        - 자바스크립트는 프로토타입 기반의 객체지향언어

            const dog = new Dog() // Dog.prototype, Object.prototype
    

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>프로토타입</title>
</head>
<body>
    <!--
        - 자바스크립트의 모든 객체는 프로토타입이라는 객체를 가지고 있음
        - 모든 객체는 프로토타입으로부터 프로퍼티와 프로퍼티 메서드를 상속 받음
        - 모든 객체는 최소한 하나 이상의 다른 객체로부터 상속을 받으며, 상속되는 정보를 
        제공하는 객체, 즉 프로토타입이라고 함

        상속
        - 클래스 기반의 객체지향 언어와 다름
        - 자바스크립트는 프로토타입 기반의 객체지향언어

            const dog = new Dog() // Dog.prototype, Object.prototype
    
            -->
    <script>
        function Dog(color, name, age){
            this.color = color
            this.name = name
            this.age = age
        }

        const Rucy = new Dog(`흰색`, `루시`,`15`)
        console.log(Rucy)                // Dog {color: '흰색', name: '루시', age: '15'}                      
        console.log(`이름 : ${Rucy.name}`)     // 이름 : 루시
        console.log(`색상 : ${Rucy.color}`)   // 색상 : 흰색
        console.log(`나이 : ${Rucy.age}`)    // 나이 : 15
        
        Rucy.family = `포메`
        Rucy.getFamily = function(){
            return this.family
        }
        console.log(`종 : ${Rucy.family}`)              // 종 : 포메
        console.log(`getFamily: ${Rucy.getFamily()}`)   // getFamily: 포메
        const PPomi = new Dog(`흰색`, `뽀미`, 6)
        
        console.log(`이름 : ${PPomi.name}`)            // 이름 : 뽀미
        console.log(`색상 : ${PPomi.color}`)          // 색상 : 흰색
        console.log(`나이 : ${PPomi.name}`)          // 나이 : 뽀미
        console.log(`종 : ${PPomi.family}`)         // 종 : undefined
        console.log(`-----------------------`)

        Dog.prototype.owner = `김사과`
        Dog.prototype.run = function(){
            return this.name + `달립니다`
        }

        console.log(`Rucy 소유자: ${Rucy.owner}`)    // Rucy 소유자: 김사과
        console.log(`PPomi 소유자: ${PPomi.owner}`)   // PPomi 소유자: 김사과
        console.log(`Rucy run: ${Rucy.run()}`)       // Rucy run: 루시달립니다
        console.log(`PPomi run: ${PPomi.run()}`)     // PPomi run: 뽀미달립니다
    </script>
</body>
</html>

 

728x90
LIST

'자바스크립트(Javascript)' 카테고리의 다른 글

18. String 객체  (0) 2024.11.04
17. Math 객체  (0) 2024.11.04
15. 클래스  (3) 2024.11.02
14. 객체  (0) 2024.11.02
13. 화살표 함수  (0) 2024.11.02