๐ฆ [๋ฅ๋ค์ด๋ธ ์คํฐ๋] 5th- 22. Class
1. ์์ฑ์ ํจ์ Person์ classํ์ผ๋ก ๋ณํํด๋ณด์ธ์.
let Person = (function () {
function Person(name) {
this.name = name;
}
Person.prototype.sayHi = function () {
console.log("My name is " + this.name);
};
Person.sayHello = function () {
console.log("Hello");
};
return Person;
//class์์๋ this ๋ฐ์ธ๋ฉ ๋๋๊ณ ์ธ์คํด์ค (this) ๋ฐํ but f๋ ์ง์ return!
//class ๊ฐ ์ ์! sugar syntax.. oop ๊ฐ๋
๋์
์ ์ํด..
})();
//answer
class Person {
//์ธ์คํด์ค ์์ฑ๋ฐ ์ด๊ธฐํ
constructor(name){
this.name = name; }
sayHi(){
console.log(`My name is ${this.name}`)
}
static sayHello(){
console.log("Hello")}
}
//prototype์ฐ๋ ์ด์ ?
// instance์์ฑ๋๋ง๋ค ํจ์ ํธ์ถํ๋ฉด ๋ฉ๋ชจ๋ฆฌ ๋์.. ๊ทธ๋์ ์. obj๋ฅผ ๋งค๋ฒ ์ฐ์ด์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ
//์ฌ์ฉํ๋๊ฒ์ด ์๋, prototype์ ๋ฉ์๋๋ฅผ ์ฐธ!์กฐ! => ์ด๊ฒฝ์ฐ prototype ์ ์ธ์คํด์ค๊ฐ ์ฐธ์กฐ. ๋ฉ๋ชจ๋ฆฌ ์ ์ฝ.
//์ฃผ์ํ ์
//ํด๋์ค ํ๋์ ํจ์๋ฅผ ํ ๋นํ๋ฉด ์๋จ. ์ธ์คํด์ค์ ๋ฉ์๋๊ฐ ๋จ. ํ๋กํ ํ์
์ ๋ฉ์๋๊ฐ ์๋๋ผ!!
//์๋๋ constructor ์์ ๊ฐ๋ง ์ถ๋ ฅ ๋๊ณ ๋ฉ์๋๋ prototype ์์ ์์!
2. ์๋์ ์ฝ๋์์ ๋ฌธ์ ๊ฐ ๋๋ ๋ถ๋ถ ์ฐพ๊ณ ์ค๋ช ํ ๋ค, ๊ณ ์ณ๋ณด์ธ์.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Document</title>
</head>
<body>
<button class="btn">0</button>
</body>
<script>
class App {
constructor() {
this.$button = document.querySelector(".btn");
this.count = 0;
this.$button.onclick = this.increase;
}
increase() {
this.$button.textContent = ++this.count;
}
/*answer
increase ๋ ํ์ดํ ํจ์๊ฐ ์๋๋ฏ๋ก this ๊ฐ DOM (this.$button)์ ๊ฐ๋ฆฌํจ๋ค.
๋ฐ๋ผ์ increase = () => this.$button.textContent = ++ this.content ๋ก ๋ฐ๊ฟ์ค์ผ
์ธ์ ๋ ์์ ์ปจํ
์คํธ์ this ๋ฅผ ๊ฐ๋ฆฌํค๊ฒ ํ๋ค. (๋ฐ์ธ๋ฉ)
=> this. onclick ์ this.increase๊ฐํ ๋น๋๋ฉด.. increase ํจ์ ๋ด์ this๊ฐ this.button.button ์ด๋ ๊ฒ ๋จ!
ํด๋์ค๊ฐ ์๋ button์ ์ข
์๋๋๊ฒ. ์ด ๊ฒฝ์ฐ ์์๊ณผ ๋ค๋ฅธ ๊ฒฐ๊ณผ.(count ๊ฐ ์์ฌ๋ผ๊ฐ)๊ฐ ๋ฐ์๊ฐ๋ฅ.
ํด๊ฒฐ์ฑ
1. this.button.onclick = this.increase.bind(this)๋ฅผ constructor์์ ํด์ ๋ฐ์ธ๋ฉํ๊ฑฐ๋
2. ํ์ดํํจ์๋ฅผ 2. ()=>{} ์ฌ์ฉํด์ ๋ฐ์ธ๋ฉ */
}
new App();
</script>
</html>
3. Rectangle ํด๋์ค๋ฅผ ์์๋ฐ์ color๋ฅผ ํ๋กํผํฐ๋ก ๊ฐ๋ ColorRectangle ํด๋์ค๋ฅผ ์์ฑํ์ธ์.
: ํ๋กํ ํ์ ๋ฉ์๋๋ ๊ธฐ์กด์ return๋ฌธ์ ์ค๋ฒ๋ผ์ด๋ฉํ์ฌ, color๊ฐ ์ถ๊ฐ๋ ๋ฌธ์ฅ์ ๋ฐํํด์ผํฉ๋๋ค.์ฝ๋๋ฅผ ์์ฑํ ๋ค ์์ฑํ ์ฝ๋๋ฅผ ์ค๋ช ํด๋ณด์ธ์.
class Rectangle {
constructor(width, height) {
this.width = width;
this.height = height;
}
toString() {
return `width = ${this.width}, height = ${this.height}`;
}
}
//My Answer
class ColorRectangle extends Rectangle {
constructor(width,height, color){
//super๋ฅผ ํตํด ๋ถ๋ชจ์ ์๋ ๊ฐ์ ์ต์ด๋ก ๋ถ๋ฌ์จ๋ค.
super(width,height);
//color๋ ์๋ก ์ถ๊ฐ๋ ์ธ์์ด๋ฏ๋ก ์ถ๊ฐ
this.color= color;
}
toString() {
return super.toString()+`,color = ${this.color}`;
}
}
Author And Source
์ด ๋ฌธ์ ์ ๊ดํ์ฌ(๐ฆ [๋ฅ๋ค์ด๋ธ ์คํฐ๋] 5th- 22. Class), ์ฐ๋ฆฌ๋ ์ด๊ณณ์์ ๋ ๋ง์ ์๋ฃ๋ฅผ ๋ฐ๊ฒฌํ๊ณ ๋งํฌ๋ฅผ ํด๋ฆญํ์ฌ ๋ณด์๋ค https://velog.io/@leejyart/๋ฅ๋ค์ด๋ธ-์คํฐ๋-5th-22.-Class์ ์ ๊ท์: ์์์ ์ ๋ณด๊ฐ ์์์ URL์ ํฌํจ๋์ด ์์ผ๋ฉฐ ์ ์๊ถ์ ์์์ ์์ ์ ๋๋ค.
์ฐ์ํ ๊ฐ๋ฐ์ ์ฝํ ์ธ ๋ฐ๊ฒฌ์ ์ ๋ (Collection and Share based on the CC Protocol.)
์ข์ ์นํ์ด์ง ์ฆ๊ฒจ์ฐพ๊ธฐ
๊ฐ๋ฐ์ ์ฐ์ ์ฌ์ดํธ ์์ง
๊ฐ๋ฐ์๊ฐ ์์์ผ ํ ํ์ ์ฌ์ดํธ 100์ ์ถ์ฒ ์ฐ๋ฆฌ๋ ๋น์ ์ ์ํด 100๊ฐ์ ์์ฃผ ์ฌ์ฉํ๋ ๊ฐ๋ฐ์ ํ์ต ์ฌ์ดํธ๋ฅผ ์ ๋ฆฌํ์ต๋๋ค