[Book/JavascriptDefiniteGuide5e] Sec 9.3 자바스크립트의 클래스 시뮬레이션 중... fr_code

// Circle 클래스
// from p.213 BOOK [Javascript Definite Guide 5/e]
// Sec 9.3 자바스크립트의 클래스 시뮬레이션 중...

================================================================
// 우선 생성자 함수를 정의한다.
function Circle(radius) {
// r은 인스턴스 프로퍼티이며, 생성자 안에서 정의되고 초기화된다.
this.r = radius;
}

// Circle.PI는 클래스 프로퍼티다. 이것은 생성자 함수의 프로퍼티다.
Circle.PI = 3.14159;

// 여기에는 원의 넓이를 계산하기 위한 인스턴스 메서드가 정의되어 있다.
Circle.prototype.area = function() { return Circle.PI * this.r * this.r; }

// 이 클래스 메서드는 Circle의 두 객체들을 받아서 더 큰 반지름을 가진 것을
// 반환한다.
Circle.max = function (a,b) {
if (a.r > b.r) return a;
else return b;
}

// 여기에 나타나 있는 코드는 위에서 정의된 필드를 사용하는 예이다.
var c= new Circle(1.0); // Circle 클래스의 인스턴스를 하나 만든다.
c.r = 2.2; // 인스턴스 프로퍼티 r의 값을 지정한다.
var a = c.area(); // 인스턴스 메서드인 area()를 호출한다.
var x = Math.exp(Circle.PI); // 클래스 프로퍼티인 PI를 사용하여 계산을 한다.
var d = newe Circle(1.2); // 다른 Circle 인스턴스를 만든다.
var bigger = Circle.max(c,d); // 클래스 메서드 max()를 사용한다.

===========================================================================
끝.