반응형
예제1
원의 넓이와 둘레를 구하는 circle이라는 생성자를 만드시오.
* TIP
기본값 매개변수
기본값 함수 매개변수 (default function parameter)를 사용하면 값이 없거나 undefined가 전달될 경우 이름붙은 매개변수를 기본값으로 초기화할 수 있습니다.
function multiply(a, b = 1) {
return a * b;
}
console.log(multiply(5, 2));
// expected output: 10
console.log(multiply(5));
// expected output: 5
답)
<body>
<script>
const circle = function(_radius = 1)
{
this.radius = _radius
this.PI = 3.14;
this.getRadius = function() {
return this.getRadius;
}
this.setRadius = function(_radius) {
if ((typeof(_radius) === 'number') && (_radius > 0)){
this.radius = _radius;
}
else {
return false;
}
}
this.getArea = function() {
// 원의 넓이 = 원주율 * 반지름 * 반지름
return this.radius * this.radius * this.PI;
}
this.getCircum = function() {
// 원의 둘레 = (반지름 * 2) * 원주율
return (this.PI * (this.radius * 2)).toFixed(2);
}
}
const circle1 = new circle(10);
console.log(circle1.getArea());
console.log(circle1.getCircum())
console.log(circle1.setRadius('234'))
//314
//62.80
//false
</script>
</body>
예제1+
일반 함수 호출과 생성자 호출이 가능한 원의 넓이와 둘레를 구하는 circle이라는 함수를 만드시오.
<body>
<script>
const circle = function(_radius = 1, cmd)
{ //!new.target
if (new.target) {
this.radius = _radius
this.PI = 3.14;
this.getRadius = function() {
return this.getRadius;
}
this.setRadius = function(_radius) {
if ((typeof(_radius) === 'number') && (_radius > 0)){
this.radius = _radius;
}
else {
return false;
}
}
this.getArea = function() {
// 원의 넓이 = 원주율 * 반지름 * 반지름
return (this.radius * this.radius * this.PI)
}
this.getCircum = function() {
// 원의 둘레 = (반지름 * 2) * 원주율
return (this.PI * (this.radius * 2)).toFixed(3);
}
}
else {
switch(cmd) {
case 'area' :
return _radius * _radius * 3.14;
break;
case 'circum' :
return (3.14 * (_radius * 2)).toFixed(2);
break;
}
}
}
const circle1 = new circle(10);
const circle2 = circle(1345, 'area');
console.log('원1의 넓이 = ' + circle1.getArea());
console.log('원1의 둘레 = ' + circle1.getCircum());
console.log('원2의 넓이 = ' + circle2)
circle1.setRadius(104) //반지름 수정
console.log('원1의 넓이 = ' + circle1.getArea());
console.log('원2의 둘레 = ' + circle(1535, 'circum'));
//원1의 넓이 = 314
//원1의 둘레 = 62.800
//원2의 넓이 = 5680338.5
//원1의 넓이 = 33962.24
//원2의 둘레 = 9639.80
</script>
</body>
참고
new.target
https://cruella-de-vil.tistory.com/55
반응형
'JavaScript' 카테고리의 다른 글
[JavaScript] throw(예외 발생) (0) | 2022.04.21 |
---|---|
[JavaScript] Class(클래스), private(접근제어) (0) | 2022.04.20 |
[JavaScript] new.target (0) | 2022.04.19 |
[JavaScript] Prototype (0) | 2022.04.19 |
[JavaScript] Closure(클로저) 예제 (0) | 2022.04.18 |