๐Ÿ“š Javascript class

Dayยท2022๋…„ 4์›” 4์ผ
0
post-thumbnail

๐Ÿ“ class

๐ŸŽฅ ํด๋ž˜์Šค ๋งŒ๋“ค๊ธฐ

ํด๋ž˜์Šค๋Š” ๊ฒฐ๊ตญ { num: 1 } ์ฒ˜๋Ÿผ ์ƒ๊ธด ๊ฐ์ฒด(object)๋ฅผ ์ž˜ ์„ค๊ณ„ํ•˜๊ธฐ ์œ„ํ•œ ํ‹€

๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด๋ž€, ํ”„๋กœ๊ทธ๋žจ์„ ๊ฐ์ฒด๋“ค๋กœ ๊ตฌ์„ฑํ•˜๊ณ , ๊ฐ์ฒด๋“ค ๊ฐ„์— ์„œ๋กœ ์ƒํ˜ธ ์ž‘์šฉ ํ•˜๋„๋ก ์ž‘์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•
(๋ง์ด ์–ด๋ ต๋‹ค)

ํด๋ž˜์Šค๋กœ ๊ฐ์ฒด๋ฅผ ๋งŒ๋“œ๋Š” ๊ณผ์ •์„ ์ธ์Šคํ„ด์Šคํ™”๋ผ๊ณ  ๋ถ€๋ฆ„

์˜ˆ์ œ ํ•˜๋‚˜๋กœ ๋๋‚ด์ž.

class Car {
 constructor(name, price) {
   this.name = name;
   this.price = price;
   this.department = "์„ ๋ฆ‰์ง€์ ";
   this.salesAmount = 0;
 }

 applyDiscount(discount) {  
   return this.price * discount;   
 }
 
 addSales() {
   this.salesAmount++;
 }
}   // car ๋ผ๋Š” ์ด๋ฆ„์˜ ํด๋ž˜์Šค๊ฐ€ ์žˆ๋‹ค. 
 
const morning = new Car('Morning', 2000000); 

console.log(morning); // ๊ทธ ํด๋ž˜์Šค์—๋‹ค๊ฐ€ ๋ชจ๋‹. 200๋งŒ ๋„ฃ์œผ๋ฉด ์ด๋Ÿฐ ๊ฐ์ฒด๊ฐ€ ๋‚˜์˜จ๋‹ค
console.log(morning.name); //๊ทธ ๊ฐ์ฒด์—์„œ ์ด๋ฆ„์— ์ ‘๊ทผํ•œ๋‹ค. = Morning
console.log(morning.price); // ๊ฐ€๊ฒฉ์— ์ ‘๊ทผํ•œ๋‹ค = 2๋ฐฑ๋งŒ

const price = morning.applyDiscount(0.8); 

console.log(price); //ํ• ์ธ ๊ฐ€๊ฒฉ 

console.log(morning.salesAmount); // 0;
morning.addSales(); // ์ด ํ•จ์ˆ˜๋ฅผ ์“ด๋‹ค. ์ด๊ฑฐ๋Š” ์œ„์— ๊ฐ’ +1 ๋งŒ๋“œ๋Š” ํ•จ์ˆ˜๋‹ˆ๊นŒ 
console.log(morning.salesAmount); // 1์ด ๋œ๋‹ค. 

ํด๋ž˜์Šค๋Š” ๊ฐ์ฒด ๋งŒ๋“œ๋Š” ๊ธฐ๊ณ„ ๊ฐ™์€ ๊ฑฐ๊ณ (์„ค๊ณ„๋„),
๋ฐ์ดํ„ฐ๊ฐ€ ์™„์ „ํ•˜์ง€ ์•Š์•„์„œ ๊ทธ์ž์ฒด๋กœ๋Š” ๊ฐ์ฒด๊ฐ€ ์•ˆ๋˜๊ณ  ๊ฐ’ ๋„ฃ์œผ๋ฉด ๊ฐ์ฒด ๋˜๋Š” ๊ทธ๋Ÿฐ๊ฑด๊ฐ€๋ณด๋‹ค.

์ƒˆ๋กœ์šด ์ธ์Šคํ„ด์Šค ๋งŒ๋“ค ๋•Œ๋งˆ๋‹ค constructor() ์“ด๋‹ค.

class ์ด๋ฆ„์€ ๋Œ€๋ฌธ์ž, CamelCase๋กœ ์จ์•ผ ํ•œ๋‹ค.

constructor() ๋ฉ”์„œ๋“œ๋Š” (name, price) 2๊ฐœ์˜ ์ธ์ž๋ฅผ ๋ฐ›์Œ

์ด๋ ‡๊ฒŒ ํด๋ž˜์Šค ๋‚ด์—์„œ name, price์™€ ๊ฐ™์ด ๋ณ€๊ฒฝ ๊ฐ€๋Šฅํ•œ ์ƒํƒœ๊ฐ’์ด์ž

class๋‚ด์˜ ์ปจํ…์ŠคํŠธ์—์„œ ์–ด๋Š ๊ณณ์—์„œ๋‚˜ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ณ€์ˆ˜๋ฅผ ๋ฉค๋ฒ„ ๋ณ€์ˆ˜๋ผ๊ณ  ๋ถ€๋ฆ„
๋ฉค๋ฒ„ ๋ณ€์ˆ˜๋Š” thisํ‚ค์›Œ๋“œ๋กœ ์ ‘๊ทผํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ“˜ ์ธ์Šคํ„ด์Šค(Instance)

์ธ์Šคํ„ด์Šค๋Š” ํด๋ž˜์Šค๋ฅผ ํ†ตํ•ด ์ƒ์„ฑ๋œ,
class์˜ property ์ด๋ฆ„๊ณผ method ๋ฅผ ๊ฐ–๋Š” ๊ฐ์ฒด

๋ณ€์ˆ˜๋กœ ์ด๊ฑธ ์ง€์ •ํ•  ์ˆœ ์žˆ๋Š”๋ฐ, ๋ณ€์ˆ˜์ด๋ฆ„์ด ๊ณง ๊ฐ์ฒด ์ด๋ฆ„์€ ์•„๋‹Œ ๊ฑฐ ๊ฐ™๋‹ค.

์ฝ˜์†” ๋„์šฐ๋ฉด ํด๋ž˜์Šค ์ด๋ฆ„์ด๋ž‘ ๊ฐ™์ด ๊ฐ์ฒด๊ฐ€ ๋œจ๋„ค

์ธ์Šคํ„ด์Šค๋งˆ๋‹ค ๋‹ค๋ฅธ ํ”„๋กœํผํ‹ฐ ๊ฐ’์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.

const morning = new Car('Morning', 20000000);

์ธ์Šคํ„ด์Šค๋Š” Class ์ด๋ฆ„์— new ๋ฅผ ๋ถ™์—ฌ์„œ ์ƒ์„ฑํ•œ๋‹ค

ํด๋ž˜์Šค ์ด๋ฆ„ ์šฐ์ธก์— () ๊ด„ํ˜ธ๋ฅผ ์—ด๊ณ  ๋‹ซ๊ณ , ๋‚ด๋ถ€์—๋Š” constructor ์—์„œ ํ•„์š”ํ•œ ์ •๋ณด๋ฅผ ์ธ์ž๋กœ ๋„˜๊ฒจ์ค€๋‹ค.

Carํด๋ž˜์Šค์˜ instance๋ฅผ morning ์ด๋ผ๋Š” ๋ณ€์ˆ˜์— ์ €์žฅํ•จ

Car ํด๋ž˜์Šค์˜ ์ƒˆ๋กœ์šด instance๋ฅผ ์ƒ์„ฑํ•˜๋ ค๋ฉด new ํ‚ค์›Œ๋“œ๊ฐ€ ํ•„์š”ํ•˜๋‹ค

new ํ‚ค์›Œ๋“œ๋Š” constructor() ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜๊ณ  ์ƒˆ๋กœ์šด instance๋ฅผ return ํ•œ๋‹ค.

Morning ์ด๋ผ๋Š” String๊ณผ 2000000 ์ด๋ผ๋Š” Number๋ฅผ Car ์ƒ์„ฑ์ž์— ๋„˜๊ฒจ์ฃผ์—ˆ๊ณ ,

name, price ํ”„๋กœํผํ‹ฐ์— ๊ฐ์ž์˜ ๊ฐ’์ด ํ• ๋‹น๋จ

๐Ÿ“ฌ๋ฉ”์†Œ๋“œ(Methods)

๊ฐ์ฒด์— ์ €์žฅ๋œ ๊ฐ’์ด ํ•จ์ˆ˜์ผ ๋•Œ, ๋ฉ”์†Œ๋“œ(Methods) ๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.

class์˜ method๋Š” ๊ฐ์ฒด๋ž‘ ๋ฌธ๋ฒ•์ด ๊ฐ™์€๋ฐ,
๋‹ค๋ฅธ์ ์€ class๋Š” ํ”„๋กœํผํ‹ฐ๋งˆ๋‹ค comma(,)๊ตฌ๋ถ„ ์•ˆํ•ด์ค˜๋„ ๋œ๋‹ค.

class์•ˆ์˜ ๋ฉ”์†Œ๋“œ๋Š”, ๊ฒฐ๊ตญ class๋ž‘ ์—ฐ๊ด€๋˜์–ด ์žˆ์–ด์„œ ์•ˆ์— ์žˆ๋Š”๊ฑฐ๋ผ,

this.ํ”„๋กœํผํ‹ฐ๋ฅผ ์‘์šฉํ•ด์„œ ๋ฆฌํ„ด๊ฐ’์œผ๋กœ ๋งŽ์ด ์“ด๋‹ค.

ํ•จ์ˆ˜ ์•ˆ์—์„œ this ๋ฅผ ์“ฐ๋Š” ๊ฑด ํ•ด๋‹น instance ๋ฅผ ๋งํ•œ๋‹ค๋Š” ๊ฒŒ ์ง„์งœ ์ค‘์š”ํ•จ

๊ฐ์ฒด์— ๋ฉ”์†Œ๋“œ ์ •์˜ ํ•˜๋Š” ๋ฒ•

let methodObj = {
  do: function() {
    console.log('๋ฉ”์„œ๋“œ ์ •์˜๋Š” ์ด๋ ‡๊ฒŒ');
  }
} //
methodObj.do();  //ํ˜ธ์ถœํ•  ๋•Œ๋Š” ์ด๋ ‡๊ฒŒ

์ด๋Ÿฐ์‹์œผ๋กœ ๋ฉ”์†Œ๋“œ๋ฅผ ์ •์˜ํ•  ์ˆ˜ ์žˆ๋‹ค.

class MyMath {
constructor(Num1, Num2){

 this.Num1 = Num1;
 this.Num2 = Num2; }

 getNumber(){

 let a = [ this.Num1 , this.Num2];

   return a;
}
add( ){
  
return this.Num1 + this.Num2 ;

}

substract(){

 return this.Num1 - this.Num2;
}
 
multiply(){

return  this.Num1*this.Num2;
}

}

 let kk = new MyMath(10,20);

 console.log(kk); //   MyMath { Num1: 10, Num2: 20 }

console.log(kk.add()); // 30 

์ž˜ ์ •๋ฆฌํ•ด๋†”์„œ ์˜ˆ์ œ ์œ„์ฃผ๋กœ ๋ณด๋ฉด ๋‹ค์‹œ ๋ด๋„ ์ดํ•ด ์‰ฌ์›€

{}์œผ๋กœ ์ƒ๊ธด ๋ชจ์–‘์˜ ๊ฐ์ฒด๋ฅผ object literal(๊ฐ์ฒด ๋ฆฌํ„ฐ๋Ÿด) ์ด๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.

๊ฐ์ฒด๋Š” ๋ฐฐ์—ด์ฒ˜๋Ÿผ index๋กœ ์ ‘๊ทผํ•˜๋Š”๊ฒŒ ์•„๋‹ˆ๋ผ, key ๋กœ ์ ‘๊ทผํ•˜๋Š” ๊ฑฐ๋ผ์„œ ์ˆœ์„œ๊ฐ€ ์ค‘์š”ํ•˜์ง€ ์•Š๋‹ค.

key : property name

value : property value

์ˆซ์ž๋กœ ๋œ key ๋Š” ๋Œ€๊ด„ํ˜ธ๋กœ ์ ‘๊ทผํ•ด์•ผ ํ•œ๋‹ค.

๊ฐ์ฒด๋Š” reference(์ปดํ“จํ„ฐ ์–ด๋Š ๊ณต๊ฐ„์˜ ๋ฉ”๋ชจ๋ฆฌ) ๋กœ ์ €์žฅ๋œ๋‹ค.
๊ฐ์ฒด๋ฅผ ๋ณ€์ˆ˜์— ์ €์žฅํ•˜๋ฉด, ๊ฐ์ฒด ์ž์ฒด๊ฐ€ ์ €์žฅ๋˜๋Š”๊ฒŒ ์•„๋‹ˆ๋ผ reference๊ฐ€ ์ €์žฅ๋œ๋‹ค.
๊ทธ๋ž˜์„œ ๋ณ€์ˆ˜๋Š” a,b ๋น„๊ตํ–ˆ์„ ๋•Œ, ๋‚ด์šฉ์ด ๊ฐ™์œผ๋ฉด a === b ๊ฐ€ ๋˜์ง€๋งŒ,
๊ฐ์ฒด๋Š” property value ๊ฐ’์ด ๋‹ค ๊ฐ™์•„๋„ ์•„์˜ˆ ๋‹ค๋ฅธ ๊ฐ์ฒด๊ฐ€ ๋œ๋‹ค
ํ•˜์ง€๋งŒ ๊ฐ์ฒด ๋‚ด๋ถ€์˜ ๊ฐ’์€ ๊ฐ™์œผ๋ฉด ๊ฐ™๋‹ค๊ณ  ๋‚˜์˜ด

0๊ฐœ์˜ ๋Œ“๊ธ€