๐จโ๐ป ์ค๋ ๊ณต๋ถํ ๊ฒ
1)Es5
function Computer(Modelname, brand, color){
this.Modelname = Modelname;
this.brand = brand;
this.color = color;
}
Computer.prototype.onPower = function(){
// ์ ์์ ํค๋ ์ฝ๋
}
Computer.prototype.offPower = function(){
// ์ ์์ ๋๋ ์ฝ๋
}
2) Es6
class Computer{
constructor(Modelname, brand, color){
this.Modelname = Modelname;
this.brand = brand;
this.color = color;
}
onPower(){
// ์ ์์ ํค๋ ์ฝ๋
}
offPower(){
// ์ ์์ ๋๋ ์ฝ๋
}
}
require์ ์์๋ฐ๊ณ ์ถ์ ํด๋์ค๋ฅผ ๋ถ๋ฌ์์ฃผ๋ ํค์๋์ด๊ณ , module.exports๋ ํด๋์ค๋ฅผ ๋ค๋ฅธ ํด๋์ค์์ ์์๋ฐ์ ์ ์๋๋ก exportsํด์ฃผ๋ ๋ฉ์๋์ด๋ค.
// Animals.js
class Animals{
constructor(name, age, whatAnimalLikes){
this.name = name;
this.age = age;
this.whatAnimalLikes = 'feed';
}
eat(){
console.log(`${name}๊ฐ ๋จน์ด๋ฅผ ๋จน์ต๋๋ค.`);
}
sleep(){
console.log(`${name}๊ฐ ์ ์ ์ก๋๋ค.`);
}
likeAnimal(){
console.log(`${name}๊ฐ ${whatAnimalLikes}์ ๋ฐ๊ณ ์ข์ํฉ๋๋ค.`);
}
}
module.exports = Animals
// Cat.js
const Animals = require('./Animals'); // ๊ฐ์ ํด๋์ ์๋ค๋ ๊ฐ์ ํ
class Cat extends Animals{
constructor(name, age, whatAnimalLikes){
super(whatAnimalLikes); // ๋ถ๋ชจํด๋์ค์์ whatAnimalLikes ๋ฅผ ์์๋ฐ๋ ์ฝ๋
this.name = '๊ณ ์์ด';
this.agre = 3;
}
eat(){
return super.eat(); // ๋ถ๋ชจํด๋์ค์์ ๋ฉ์๋ eat()์ ์์๋ฐ๋ ์ฝ๋
}
likeAnimal(){
return console.log("๊ณ ์์ด๊ฐ ์ข์ํฉ๋๋ค.") // ๋ถ๋ชจํด๋์ค์์ ์์๋ฐ์ง์๊ณ ๋ฉ์๋๋ฅผ ์ ์ธํ ์ฝ๋
}
}
Animals.prototype === Cat.__proto__;
// true
๊ทธ๋ ๋ค๋ฉด prototype๋ผ๋ ๊ฐ์ฒด๋ ๋ฌด์์ ๊ฐ์ง๊ณ ์์ ๊น??
๋ถ๋ชจํด๋์ค์์ ์ ์ธํ ๋ฉ์๋์ ์์ ์๊ธฐํ constructor์ ๊ฐ์ง๊ณ ์๋ค.
์ค๋ผ์ ํฌ ์ํ์ฝ๋ฉ์ด๋ค..