티스토리 뷰

 

 

 

 

생성자 함수

const Person = (function(){
    //인스턴스 메소드, 프로퍼티
    function Person(name){
        this.name = name;
        this.sayName = function(){
            console.log('name:'+this.name);
        }
    }

    //프로토타입 메소드, 프로퍼티
    Person.prototype.age = 20;
    Person.prototype.sayHi = function(){
        console.log('Hi! My name is '+this.name);
    }
    
    //정적 메소드, 프로퍼티
    Person.country = "america";
    Person.sayHello = function(){
        console.log('Hello');
    }
    
    return Person;
}());

let emma = new Person("Emma");

 

 

 

 

 

 

클래스

class Person{

    //인스턴스 메소드, 프로퍼티
    //1. 클래스 필드 - 클래스 몸체에 this 없이 선언
    hobby = "baseball";
    sayHobby = () => console.log(this.hobby);
    //2. 생성자
    constructor(name){
        this.name = name;
        this.sayName = function(){
            console.log(this.name);
        }
    }

    //프로토타입 메서드
    sayHi(){
        console.log('Hi! My name is '+this.name);
    }

    //정적 메소드, 프로퍼티
    static country = "america";
    static sayHello(){
        console.log('Hello');
    }

}

let john = new Person('John');

클래스에서 프로토타입 프로퍼티를 지정하는 방법은 딱히 없는 것 같은데 (뭔가 복잡하게 트릭을 쓰는거 제외하면?)

사실 프로토타입 프로퍼티 그닥 필요없어서 그런것 같음.

인스턴스 별로 다른 값 가지고 싶은 경우면 인스턴스 프로퍼티로, 그냥 모두가 동일한 값 참조하고 싶은 거라면 정적 프로퍼티로 만들면 될테니까.

 

 

 

 

 

 

 

댓글
공지사항
최근에 올라온 글