본문 바로가기

언어/javascript

javascirpt : 클래스 선언과 속성

반응형

javascript에서 class를 선언하고 생성자를 선언하는 방식은 constructor을 이용한다.

class Rectangle {
    constructor(width, height){
        this.width = width;
        this.height = height;
    }
}
function Rectangle(width,height){
    this.width = width;
    this.height = height;
}

두개의 차이점은 많지가 않다.

 

메서드 선언에서는 프로타입 안에 선언하는 것이 아니라, class 블록 내부에 선언하게 됩니다.

class Rectangle{
    constructor(width,height){
        this.width = width;
        this.height = height;
    }

    getArea(){
        return this.width * this.height;
    }
}

const rectangle = new Rectangle(100,200);
console.log(rectangle.getArea());

function을 이용한 class선언은 prototpye을 이용하여 선언한다.

 

function Rectangle(width, height) {
    this.width = width;
    this.height = height;
}

Rectangle.prototype.getArea = function () {
    return this.width * this.height;
};

var rectangle = new Rectangle(100, 200);
console.log(rectangle.getArea());

 

 

java와 비슷하게 getter와 setter를 선언한다.

class Rectangle {
    constructor(width, height) {
        this._width = width;
        this._height = height;
    }

    get width(){
        return this._width;
    }

    set width(input){
        this._width = input;
    }

    get height(){
        return this._heigth;
    }

    set height(input){
        return this._heigth = input;
    }

    getArea() {
        return this._width * this._height;
    }
}

const rectangle = new Rectangle(100,200);
rectangle.width = 200;

console.log(rectangle.width);
console.log(rectangle.getArea());

일반적으로 "절대 개발한 나말고 만지지 말아주세요!"라는 표현을 할려면 변수 앞에 _ 을 붙인다.

 

게터와 세터는 메서드를 선언할 때 앞에 get 또는 set을 붙여 선언합니다. get을 붙여 만든 메서드는 rectangle.width처럼 '값을 가져오는 행위'를 할 때 자동으로 호출됩니다.

 

class Square extends Rectangle {
    constructor(length) {
        super(length, length);
        console.log(this);
    }

    set width(input) {
        this._width = input;
        this._height = input;
    }

    set height(input) {
        this._width = input;
        this._height = input;
    }
}

const square = new Square(100);
console.log(square.getArea());
Square { _width: 100, _height: 100 }
10000
반응형

'언어 > javascript' 카테고리의 다른 글

javascript : Object 객체 내장함수  (0) 2020.12.15
javascript : 기본자료형  (0) 2020.12.15
javascript : prototype, constructor  (0) 2020.12.14
javascript : 상속  (0) 2020.12.10
javascript : new 키워드  (0) 2020.12.09