<script type="text/javascript">
function Rectangle(w, h) {
var width = w;
var height = h;
this.getWidth = function () {
return width;
};
this.getHeight = function () {
return height;
};
this.setWidth = function (value) {
if (value < 0) {
throw '길이는 음수일 수 없습니다.';
} else {
width = value;
}
};
this.setHeight = function (value) {
if (value < 0) {
throw '길이는 음수일 수 없습니다.';
} else {
height = value;
}
};
}
Rectangle.prototype.getArea = function () {
return this.getWidth() * this.getHeight();
};
var rectangle = new Rectangle(5, 7);
alert('AREA: ' + rectangle.getArea());
function Square(length)
{
this.base = Rectangle;
//base 속성에 함수 Rectabgle을 넣고 실행
this.base(length, length);
}
Square.prototype = Rectangle.prototype;
//Square 프로토타입에 Rectabgle 프로토타입
var square = new Square(5);
alert(square instanceof Rectangle);
</script>
자바스크립트에서 상속이란 생성자 함수나 객체를 기반으로 새로운 생성자 함수나 객체를 만든다를 뜻한다
먼저 Square의 base속성에 Rectangle 함수를 넣고 Rectangle의 프로토타입도
위 소스에서 Rectabgle함수를 상속받아 속성들을 Square에서 그대로 사용할 수 있게 한다
square 객체의 프로토타입에 저장 했다
추가로 자바스크립트에서는 정확한 상속 방법은 없다, 상속 여부를판단하는 기준은
instanceof 키워드를 사용하여true가 출력된다면 상속됐다고 판단한다
var square = new Square(5);
alert(square instanceof Rectangle);
'개발개발 > 자바스크립트' 카테고리의 다른 글
기본내장객체 - Number (0) | 2012.08.27 |
---|---|
기본내장객체 - object (0) | 2012.08.27 |
getter,setter (0) | 2012.08.27 |
프로토타입 (0) | 2012.08.27 |
생성자 함수 (0) | 2012.08.27 |