본문 바로가기

web../javascript

자바스크립트 - 객체지향(자바) 흉내내기

---------------------------------------------------------------------

자바의 클래스는 네 개의 기본 타입으로 이루어진다.

인스턴스 프로퍼티, 인스턴스 메서드, 클래스 프로퍼티, 클래스 메서드.

---------------------------------------------------------------------


# 자바스크립트의 인스턴스 프로퍼티

모든 객체에는 자신만의 인스턴스 프로퍼티 사본이 있다. 즉, 한클래스에 속하는 객체가 열 개 있다면 인스턴스 프로퍼티 사본이 열 개 만들어진다.


# 자바스크립트의 인스턴스 메서드

인스턴스 메서드는 메서드를 호출한 객체나 인스턴스를 참조하기 위해서 this 키워드를 사용한다.

클래스의 인스턴스가 인스턴스 메서드를 호출할 수는 있지만, 인스턴스 프로퍼티같이 각 객체마다 그들만의 메서드 사본을 가진다는 말은 아니다. 대신 각 인스턴스 메서더는 클래스의 모든 인스턴스가 공유한다.

자바스크립트에서의 클래스의 인스턴스 메서드는 생성자의 프로토타입 객체가 가진 프로퍼티에 함수 값을 넣어주는 방법을 통해서 정의 된다.


# 자바스크립트의 클래스 프로퍼티

자바에서 클래스 프로퍼티란 클래스의 각 인스턴스가 아닌 클래스 자체와 연관 되어 있는 프로퍼티를 말한다.

자바스크립트에서도 클래스 프로퍼티를 흉내낼 수 있다.


# 자바스크립트의 클래스 메서드

클래스 메서드는 클래스의 인스턴스보다 클래스 자체와 연관이 있다. 클래스 메서드는 특정 인스턴스를 통해 호출 되지 않고 클래스 자체를 통해 호출 된다.




 <script>


function Circle(radius){

this.radius = radius; //인스턴스 프로퍼티이며, 생성자 안에서 정의되고 초기화 된다.

}

Circle.PI = 3.14; //클래스 프로퍼티 선언



// 인스턴스 메서드 선언

Circle.prototype.area = function(){

return this.radius * this.radius * Circle.PI;

}


//클래스 메서드 선언

Circle.max = function(a, b){

if(a.radius > b.radius) return a

else return b;

}


</script>