์ „์ฒด ๊ธ€

๐Ÿ‘ฉ‍๐Ÿ’ป java, mysql, android, php, javascript๋ฅผ ๋‹ค๋ฃน๋‹ˆ๋‹ค
OOP ๋ž€? ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ (Object Oriented Programming)์„ ๋œปํ•œ๋‹ค. OOP์˜ ๋ชจ๋“  ๊ฒƒ์€ '๊ฐ์ฒด'๋กœ ๊ทธ๋ฃนํ™”๋œ๋‹ค. ํŠนํžˆ, OPP๋Š” 4๊ฐ€์ง€ ๊ฐœ๋…์„ ๊ฐ€์ง€๊ณ  ์žˆ์–ด ์žฌ์‚ฌ์šฉ์„ฑ์ด ์ข‹๋‹ค. OOP 4๊ฐ€์ง€ ๊ฐœ๋… ์บก์Šํ™”(Encapsulation) ์†์„ฑ๊ณผ ๋ฉ”์†Œ๋“œ๋ฅผ ๋”ฐ๋กœ ์ •์˜ํ•˜์ง€ ์•Š๊ณ , ํ•˜๋‚˜์˜ ๊ฐ์ฒด ์•ˆ์—์„œ ๋Š์Šจํ•˜๊ฒŒ ๋ฌถ๋Š”๋‹ค ์€๋‹‰(๊ตฌํ˜„์€ ์ˆจ๊ธฐ๊ณ , ๋™์ž‘์€ ๋…ธ์ถœ์‹œํ‚ด) ๊ณผ ๋Š์Šจํ•œ ๊ฒฐํ•ฉ(์–ธ์ œ๋“  ์ˆ˜์ •๊ฐ€๋Šฅ)์— ์œ ๋ฆฌํ•˜๋‹ค ์ถ”์ƒํ™”(Abstraction) ์ „ํ™”๊ธฐ์˜ ํšŒ๋กœ๋„๊ฐ€ ๋ˆˆ์— ๋ณด์ด์ง€ ์•Š์ง€๋งŒ, ๋ˆ„๊ตฌ๋‚˜ ์ „ํ™”๊ธฐ๋ฅผ ์‰ฝ๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค ๋„ˆ๋ฌด ๋งŽ์€ ๊ธฐ๋Šฅ์ด ๋…ธ์ถœ๋˜์ง€ ์•Š๊ฒŒ ํ•˜์—ฌ ์‚ฌ์šฉ ์ƒ์˜ ํ˜ผ๋ž€์„ ์—†์•ค๋‹ค ์ƒ์†(Inheritance) ์ž์‹์€ ๋ถ€๋ชจ๊ฐ€ ๊ฐ€์ง„ ์œ ์ „์ž๋ฅผ ๋™์ผํ•˜๊ฒŒ ๊ฐ–๊ณ  ์žˆ๋‹ค. ๊ทธ ๋™์ผํ•œ ๋ถ€๋ถ„์„ ์ผ์ผํžˆ ์“ฐ์ง€ ์•Š๊ณ , ๋ถ€๋ชจ๋ฅผ ๋Œ์–ด์™€..
๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํ•˜๋‚˜์˜ ๋ชจ๋ธ์ด ๋˜๋Š” ์ฒญ์‚ฌ์ง„(blueprint)๋ฅผ ๋งŒ๋“ค๊ณ  , → ํด๋ž˜์Šค(class) ๊ทธ ์ฒญ์‚ฌ์ง„์„ ๋ฐ”ํƒ•์œผ๋กœ ํ•œ ๊ฐ์ฒด๋ฅผ ์ฐ์–ด๋‚ด๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํŒจํ„ด → ์ธ์Šคํ„ด์Šค(instance) ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“œ๋Š” ์ตœ๊ทผ์— ES6์— ๋„์ž…๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ํด๋ž˜์Šค๋Š” constructor๋ฅผ ํ’ˆ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค class Car { constructor(brand, name, color){ //์ธ์Šคํ„ด์Šค๊ฐ€ ๋งŒ๋“ค์–ด์งˆ ๋•Œ ์‹คํ–‰๋˜๋Š” ์ฝ”๋“œ } } ์†์„ฑ๊ณผ ๋ฉ”์†Œ๋“œ ํด๋ž˜์Šค์— ์†์„ฑ๊ณผ ๋ฉ”์†Œ๋“œ๋ฅผ ์ •์˜ํ•˜๊ณ , ์ธ์Šคํ„ด์Šค์—์„œ ๊ทธ๊ฒƒ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค โ–ถ ํด๋ž˜์Šค: ์†์„ฑ์˜ ์ •์˜ - ES5 ์—์„œ๋Š” class ์™€ constructor ๋Œ€์‹  ๊ทธ๋ƒฅ function ์„ ์‚ฌ์šฉํ–ˆ๋‹ค - ES6 ์—์„œ๋Š” class ์™€ constructor ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค //ES5 function Car(..
๊ณ ์ฐจํ•จ์ˆ˜๋ž€? 1. ์ „๋‹ฌ์ธ์ž๋กœ ํ•จ์ˆ˜๋ฅผ ๋ฐ›๋Š” ํ•จ์ˆ˜ 2. ํ•จ์ˆ˜๋ฅผ ๋ฆฌํ„ดํ•˜๋Š” ํ•จ์ˆ˜ ๋‘˜ ์ค‘์— ํ•˜๋‚˜ ์ด์ƒ ํ•ด๋‹น๋˜๋ฉด ๊ณ ์ฐจํ•จ์ˆ˜์ด๋‹ค. ๊ณ ์ฐจํ•จ์ˆ˜์—์„œ ์ž์ฃผ ์“ฐ์ด๋Š” ๋‚ด์žฅ๊ณ ์ฐจํ•จ์ˆ˜ 3๊ฐ€์ง€ ๋ฉ”์†Œ๋“œ๊ฐ€ ์žˆ๋‹ค. ํŠนํžˆ, ๋ฐฐ์—ด ๋ฐ˜๋ณต๋ฌธ์—์„œ ์ž์ฃผ์“ฐ์ด๋Š” 3์ธ๋ฐฉ์ด๋‹ค. ๊ทธ๋ž˜์„œ ๋ฐฐ์—ด ๋ฐ˜๋ณต๋ฌธ 3์ธ๋ฐฉ์ด๋ผ๊ณ  ์ด๋ฆ„ ์ง“๊ฒ ๋‹ค. arr.filter() ํŠน์ • ๊ธฐ์ค€์„ ๊ฐ€์ง€๊ณ  ๋ถ„๋ฅ˜ํ• ๋•Œ (ํ•„ํ„ฐ๋ง) - ์—ฌ๋Ÿฌ ์Œ๋ฃŒ์ค‘์—์„œ ํ‹ฐ ์ข…๋ฅ˜๋งŒ ๊บผ๋‚ด๊ณ  ์‹ถ์„๋•Œ (ํ‹ฐ ์ข…๋ฅ˜๋งŒ์œผ๋กœ ๋ฐฐ์—ด๋งŒ๋“ค๊ธฐ) ๋ฆฌํ„ด๊ฐ’์ด '์ฐธ'์ธ๊ฒƒ๋งŒ ๊ฑธ๋Ÿฌ์ง„๋‹ค.๋ฌธ์ œ : ๋ฌธ์ž์—ด์„ ์š”์†Œ๋กœ ๊ฐ–๋Š” ๋ฐฐ์—ด์„ ์ž…๋ ฅ๋ฐ›์•„ ๊ทธ ๊ธธ์ด๊ฐ€ ํ™€์ˆ˜์ธ ์š”์†Œ๋งŒ์„ ๊ฐ–๋Š” ๋ฐฐ์—ด์„ ๋ฆฌํ„ดํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.function filterOddLengthWords(words) { // TODO: ์—ฌ๊ธฐ์— ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค. return words.filter(function(el){ ..
bind() bind()๋Š” this ๊ฐ’์„ ๊ณ ์ •์‹œํ‚ค๋Š” ๋ช…๋ น! bind() ์•ˆ์˜ ์ฒซ๋ฒˆ์งธ ์ธ์ž๋Š” this ๋ฅผ ๊ณ ์ •์‹œํ‚ค๊ณ , ๋‘๋ฒˆ์งธ ์ธ์ž๋ถ€ํ„ฐ๋Š” ํ•จ์ˆ˜๊ฐ€ ํ˜ธ์ถœ๋ ๋•Œ๋งˆ๋‹ค ์‚ฌ์šฉ๋œ๋‹ค. sum์ด๋ผ๋Š” ํ•จ์ˆ˜์— this๋ฅผ kim ์œผ๋กœ ๊ณ ์ •ํ•˜๋Š” ์ƒˆ๋กœ์šด ํ•จ์ˆ˜(KimSum)๊ฐ€ ๋งŒ๋“ค์–ด์ง // object ์™€ function ์‚ฌ์ด์˜ ๊ด€๊ณ„๋ฅผ ๊ทœ๋ช…ํ•ด๋ณด๊ธฐ 2 let kim = {name:'kim', first:10, second:20} let lee = {name:'lee', first:10, second:10} function sum(prefix){ return prefix +(this.first + this.second); } console.log('sum.call(kim)', sum.call(kim, '=>')); console.log('..
call()์€ ์‹คํ–‰ํ• ๋•Œ๋งˆ๋‹ค ์–ด๋–ค ๊ฐ์ฒด์˜ this ๊ฐ’์„ ๋ฐ”๊พธ๋Š” ๋ช…๋ น! call()์€ ์ฒซ๋ฒˆ์งธ ์ธ์ž๋กœ๋Š” ๊ทธ ํ•จ์ˆ˜์— ๋‚ด๋ถ€์ ์œผ๋กœ this๋ฅผ ๋ญ˜๋กœ ํ• ์ง€ ์˜ค๊ณ , ๋‘๋ฒˆ์งธ ์ธ์ž๋ถ€ํ„ฐ๋Š” ํ˜ธ์ถœํ•˜๋ ค๋Š” ํ•จ์ˆ˜์— ์ธ์ž๊ฐ’(parameter)์ด ๋“ค์–ด์˜ค๊ฒŒ ๋œ๋‹ค // object ์™€ function ์‚ฌ์ด์˜ ๊ด€๊ณ„๋ฅผ ๊ทœ๋ช…ํ•ด๋ณด๊ธฐ 1 //์„œ๋กœ ์•„๋ฌด๋Ÿฐ ๊ด€๋ จ์ด ์—†๋Š” ๋‘ ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค์—ˆ์–ด์š”. let kim = {name:'kim', first:10, second:20} let lee = {name:'lee', first:10, second:10} function sum(prefix){ return prefix +(this.first + this.second); // ์–ด๋–ค ๊ฐ์ฒด์—๋„ ์†ํ•ด์žˆ์ง€ ์•Š์€ ํ•จ์ˆ˜ } //sum ์ด๋ผ๋Š” ๊ฐ์ฒด๋ฅผ ์‹คํ–‰์‹œํ‚ค๊ฒ ๋‹ค! consol..
์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ๊ต‰์žฅํžˆ ์œ ์—ฐํ•œ ํŠน์ง•! ๋งˆ์Œ๋Œ€๋กœ ๋ˆ„๊ตฐ๊ฐ€์˜ ์ž์‹์ด ๋  ์ˆ˜ ์žˆ๋‹ค~~ ๋‹จ, ์ž์‹์€ ๋ถ€๋ชจ๋ฅผ ๋ชป๋ฐ”๊พผ๋‹ค let superObj = {superVal:'super'} let subObj = {subVal:'sub'} // ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ๊ต‰์žฅํžˆ ์œ ์—ฐํ•œ ํŠน์ง•! // ๋งˆ์Œ๋Œ€๋กœ ๋ˆ„๊ตฐ๊ฐ€์˜ ์ž์‹์ด ๋  ์ˆ˜ ์žˆ๋‹ค subObj.__proto__ = superObj; // '__proto__'๋ผ๋Š” ๋งํฌ๋ฅผ ๊ฑธ์–ด์คŒ: subObj๋Š” ์„ ์กฐ๋Š” superObj์ด๋‹ค console.log('subObj.subVal =>',subObj.subVal); console.log('subObj.superVal =>',subObj.superVal);// ๊ฐ์ฒด subObj๊ฐ€ superVal์ด๋ผ๋Š” ์†์„ฑ์„ ๊ฐ€์ง€๋Š” ์ง€ ์ฐพ์•„๋ด„. ์—†๋‹ค, ๊ทธ๋Ÿฌ๋ฉด '__pro..
Object.create() __proto__ ๋Œ€์‹ ์— 'Object.create()' ๋ฅผ ์‚ฌ์šฉํ•ด์„œ prototype link(๋ช…ํ™•ํ•œ ์ƒ์†๊ด€๊ณ„)๋ฅผ ์ง€์ •ํ•ด์ค„ ์ˆ˜ ์žˆ๋‹ค. let lee = Object.create(kim); kim์„ ๋ถ€๋ชจ๋กœ ํ•˜๋Š” ์ž์‹๊ฐ์ฒด lee๋ฅผ ๋งŒ๋“ค์–ด์ค˜ let superObj = {superVal:'super'} //let subObj = {subVal:'sub'} //subObj.__proto__ = superObj; let subObj = Object.create(superObj);// superObj๋ฅผ ๋ถ€๋ชจ๋กœ ํ•˜๋Š” ์ƒˆ๋กœ์šด ๊ฐ์ฒด,๋ณด๋‹ค prototype link(๋ช…ํ™•ํ•œ ์ƒ์†๊ด€๊ณ„)๋ฅผ ํ™•๋ฆฝ! subObj.subVal = 'sub'; //์ฃผ์„์ฒ˜๋ฆฌ๋ฅผ ํ•œ ์œ„์˜ ์ฝ”๋“œ์™€ ๋˜‘๊ฐ™์ด ๋™์ž‘ console.lo..
'__proto__' lee.__proto__ = kim; lee๋Š” kim์˜ ์ž์‹์ด๋‹ค // class ๋ฌธ๋ฒ•์ด ์•„๋‹ˆ๋ผ ์•„์ฃผ ๊ด€์Šต์ (prototype)์œผ๋กœ ์ƒ์†ํ•˜๋Š” ๋ฐฉ๋ฒ• let superObj = {superVal:'super'} let subObj = {subVal:'sub'} // ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ๊ต‰์žฅํžˆ ์œ ์—ฐํ•œ ํŠน์ง•! // ๋งˆ์Œ๋Œ€๋กœ ๋ˆ„๊ตฐ๊ฐ€์˜ ์ž์‹์ด ๋  ์ˆ˜ ์žˆ๋‹ค subObj.__proto__ = superObj; // '__proto__'๋ผ๋Š” ๋งํฌ๋ฅผ ๊ฑธ์–ด์คŒ: subObj๋Š” ์„ ์กฐ๋Š” superObj์ด๋‹ค console.log('subObj.subVal =>',subObj.subVal); console.log('subObj.superVal =>',subObj.superVal);// ๊ฐ์ฒด subObj๊ฐ€ superVa..
becky(์ง€์€)
Know yourself, follow your passion