ํ‹ฐ์Šคํ† ๋ฆฌ ๋ทฐ


๊ฐ์ฒด์ง€ํ–ฅ์–ธ์–ด๋ฅผ ๋ฐฐ์šธ ๋•Œ ํ•ญ์ƒ ๋‚˜์˜ค๋Š” ํ‚ค์›Œ๋“œ ์ค‘ ํ•˜๋‚˜๊ฐ€ class ์ž…๋‹ˆ๋‹ค. ์ €๋Š” Java์™€ C++์„ ๋ฐฐ์šธ ๋•Œ ์ ‘ํ•˜๊ฒŒ ๋˜์—ˆ๋Š”๋ฐ ES6์—์„œ class์˜ ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•ด์กŒ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์—ฌ๊ธฐ์„œ ์งš๊ณ  ๋„˜์–ด๊ฐ€์•ผํ•  ๊ฒƒ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ํ”„๋กœํ† ํƒ€์ž…์— ๊ด€ํ•œ ๊ฐœ๋…์ธ๋ฐ์š”


MDN์˜ Class์— ๊ด€ํ•œ ๊ธ€์— ์ด๋Ÿฐ ๋ง์ด ๋‚˜์˜ต๋‹ˆ๋‹ค.



JavaScript class๋Š” ECMAScript 6์„ ํ†ตํ•ด ์†Œ๊ฐœ๋˜์—ˆ์œผ๋ฉฐ, ๊ธฐ์กด prototype ๊ธฐ๋ฐ˜์˜ ์ƒ์† ๋ณด๋‹ค ๋ช…๋ฃŒํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Class ๋ฌธ๋ฒ•์€ ์ƒˆ๋กœ์šด ๊ฐ์ฒด์ง€ํ–ฅ ์ƒ์† ๋ชจ๋ธ์„ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค. JavaScript class๋Š” ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์ƒ์†์„ ๋‹ค๋ฃจ๋Š”๋ฐ ์žˆ์–ด ํ›จ์”ฌ ๋” ๋‹จ์ˆœํ•˜๊ณ  ๋ช…ํ™•ํ•œ ๋ฌธ๋ฒ•์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.




javascript ๋Š” ํ”„ํ† ๋กœํƒ€์ž… ๊ธฐ๋ฐ˜์˜ ์–ธ์–ด์ด๋‹ค.


es6์—์„œ ์ง€์›ํ•˜๋Š” class๋Š” ๊ธฐ๋ณธ ๊ฐœ๋…์€ ํ”„๋กœํ† ํƒ€์ž…์„ ๋”ฐ๋ผ๊ฐ€๋‚˜ class ํ‚ค์›Œ๋“œ๋ฅผ ์ง€์›ํ•˜์—ฌ ๋งˆ์น˜ class ๊ธฐ๋ฐ˜์˜ ๊ฐ์ฒด์ง€ํ–ฅ ์–ธ์–ด์ธ ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์—ฌ์ง€๋Š” ๊ฒƒ์ด์ฃ . ์•„๋ฌด๋ž˜๋„ ์ด ๋ฐฉ๋ฒ•์ด ๋” ๊ฐ€๋…์„ฑ๋„ ์ข‹๊ณ  ๋‹ค๋ฅธ ๊ฐ์ฒด์ง€ํ–ฅ ์–ธ์–ด๋“ค์ด ๋งŽ์ด ํƒํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋ผ ๋”ฐ๋ผ๊ฐ€๋Š” ๊ฒƒ์ด ์•„๋‹๊นŒ ์‹ถ์Šต๋‹ˆ๋‹ค. ํ”„๋กœํ† ํƒ€์ž…์— ๋Œ€ํ•œ ๊ฐ„๋‹จํ•œ ์„ค๋ช…์„ ๋ณด์ž๋ฉด



JavaScript์—์„œ ๊ฑฐ์˜ ๋ชจ๋“  ๊ฐ์ฒด๋Š” Object์˜ ์ธ์Šคํ„ด์Šค์ž…๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์ธ ๊ฐ์ฒด๋Š” Object.prototype ์—์„œ ์†์„ฑ๊ณผ ๋ฉ”์„œ๋“œ๋ฅผ ์ƒ์†๋ฐ›์œผ๋ฉฐ, ๊ทธ ์ค‘ ์ผ๋ถ€๋Š” (์˜ค๋ฒ„๋ผ์ด๋“œ ๋“ฑ์œผ๋กœ ์ธํ•ด) ์ˆจ๊ฒจ์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜, ์˜๋„์ ์œผ๋กœ Object๋ฅผ ์ƒ์„ฑํ•  ๋•Œ (Object.create(null) ์ฒ˜๋Ÿผ) ์ด๋ฅผ ํ”ผํ•  ์ˆ˜๋„ ์žˆ๊ณ , Object.setPrototypeOf ๋“ฑ์„ ํ†ตํ•ด ๋‚˜์ค‘์— ๋ฌดํšจํ™”ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

Object ํ”„๋กœํ† ํƒ€์ž…์— ๊ฐ€ํ•˜๋Š” ๋ณ€๊ฒฝ์€ ํ”„๋กœํ† ํƒ€์ž… ์ฒด์ธ์„ ํ†ตํ•ด, ๋” ์•„๋ž˜์ชฝ ์ฒด์ธ์—์„œ ๋ฎ์–ด ์“ด ๊ฒฝ์šฐ๊ฐ€ ์•„๋‹ˆ๋ผ๋ฉด ๋ชจ๋“  ๊ฐ์ฒด์—์„œ ๊ด€์ธกํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ๊ฐ์ฒด๋ฅผ ํ™•์žฅํ•˜๊ฑฐ๋‚˜ ํ–‰๋™์„ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ๋Š” ๋งค์šฐ ๊ฐ•๋ ฅํ•˜๋ฉด์„œ๋„ ์œ„ํ—˜ํ•œ ๋ฐฉ๋ฒ•์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.


์›Œ๋‚™ javascript ์˜ ์ •์˜์— ๊ด€๋ จ๋œ ๋ถ€๋ถ„์ด๋ผ ๊นŠ์ด์žˆ๊ฒŒ ๋‹ค๋ฃจ์ง€ ๋ชปํ•  ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ํ”„๋กœํ† ํƒ€์ž…์— ๋Œ€ํ•œ ๊ฐ„๋‹จํ•œ ์˜ˆ๋ฅผ ๋ณด๊ณ  ๋‹ค์Œ ํฌ์ŠคํŒ…๋ถ€ํ„ฐ class์— ๊ด€ํ•œ ์ด์•ผ๊ธฐ๋ฅผ ํ•ด๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.


1
2
3
4
5
6
7
8
9
10
Object.prototype.compare = function(o) {
    let ok = Object.keys(this);
      return typeof o === "object" && ok.length === Object.keys(o).length ? ok.every(k => this[k] === o[k]) : false;
}
let obj1 = {a:1,b:2,c:3},
    obj2 = {c:3,a:1,b:2};
 
console.log(obj1.compare(obj2))    //result : true
console.log(obj1===obj2)           //result : false
 
cs


2๊ฐœ์˜ ๊ฐ์ฒด๋ฅผ ๋น„๊ตํ•˜๊ธฐ ์œ„ํ•ด ๊ฐ์ฒด์— ๋Œ€ํ•œ compare ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“  ์˜ˆ์‹œ์ž…๋‹ˆ๋‹ค. Object ์ž๋ฃŒํ˜•์ผ ๋•Œ ๋งˆ์น˜ ๋‚ด์žฅํ•จ์ˆ˜์ฒ˜๋Ÿผ ๋ชจ๋‘ ์ ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‘ ๊ฐœ์˜ ๊ฐ์ฒด๊ฐ€ ์ˆœ์„œ๋งŒ ๋‹ค๋ฅธ๋ฐ ๋น„๊ต๊ตฌ๋ฌธ์„ ์“ฐ๋ฉด false ๊ฐ’์„ ์ถœ๋ ฅํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด Object ์ž๋ฃŒํ˜•์— ๋น„๊ต์—ฐ์‚ฐ์„ ์ ์šฉํ•ด์„œ ์ •ํ™•ํ•œ ๊ฐ์ฒด๋น„๊ต๊ฐ€ ๊ฐ€๋Šฅํ•ด์ง‘๋‹ˆ๋‹ค. 



๋Œ“๊ธ€
๊ณต์ง€์‚ฌํ•ญ
์ตœ๊ทผ์— ์˜ฌ๋ผ์˜จ ๊ธ€
์ตœ๊ทผ์— ๋‹ฌ๋ฆฐ ๋Œ“๊ธ€
Total
Today
Yesterday
๋งํฌ
ยซ   2024/05   ยป
์ผ ์›” ํ™” ์ˆ˜ ๋ชฉ ๊ธˆ ํ† 
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
๊ธ€ ๋ณด๊ด€ํ•จ