반응형
생성자 함수를 생성할 때는 모두 new 키워드를 사용해왔습니다. 왜 new 키워드를 사용할까요?
new 키워드를 사용하지 않으면 어떠한 일이 발생할까요? 생성자 함수를 생성하고 new 키워드로 객체를 생성합니다.
// 생성자 함수를 선언합니다.
function Constructor(value){
this.value = value;
}
// 변수를 선언합니다.
var constructor = new Constructor('Hello');
// 출력합니다.
console.log(constructor.value);
Rectangle 객체와 함수
// 생성자 함수를 선언합니다.
function Rectangle(width, height){
this.width = width;
this.height = height;
}
Rectangle.prototype.getArea = function(){
return this.width * this.height;
};
// 변수를 선언합니다.
var rectangle = new Rectangle(5,7);
// 출력합니다.
console.log('AREA: '+ rectangle.getArea());
width 속성이나 heght 속성에 음수를 입력하면 예외가 발생. 이러한 경우를 대비하기 위해서 클로저를 활용한다.
function Rectangle(w, h) {
// 변수를 선언합니다.
var width = w;
var height = h;
// 메서드를 선언합니다.
this.getWidth = function () { return width; };
this.getHeight = function () { return height };
this.setWidth = function (w) {
width = w;
};
this.setHeight = function (h) {
height = h;
};
}
예외처리 하는 방법
// 생성자 함수를 선언합니다.
function Rectangle(w, h) {
// 변수를 선언합니다.
var width = w;
var height = h;
// 메서드를 선언합니다.
this.getWidth = function () { return width; };
this.getHeight = function () { return height; };
this.setWidth = function (w) {
if (w < 0) {
throw '길이는 음수일 수 없습니다.';
} else {
width = w;
}
};
this.setHeight = function (h) {
if (h < 0) {
throw '길이는 음수일 수 없습니다.';
} else {
height = h;
}
};
}
Rectangle.prototype.getArea = function () {
return this.getWidth() * this.getHeight();
};
// 변수를 선언합니다.
var rectangle = new Rectangle(5,7);
rectangle.setWidth(-2);
// 출력합니다.
console.log('AREA: '+ rectangle.getArea());
반응형
'언어 > javascript' 카테고리의 다른 글
javascript : prototype, constructor (0) | 2020.12.14 |
---|---|
javascript : 상속 (0) | 2020.12.10 |
javascript : 프로토타입으로 메서드 생성 (0) | 2020.12.09 |
javascript : instanceof (0) | 2020.12.09 |
javascript : 메서드 생성 (0) | 2020.12.09 |