OOP ๋? ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ (Object Oriented Programming)์ ๋ปํ๋ค. OOP์ ๋ชจ๋ ๊ฒ์ '๊ฐ์ฒด'๋ก ๊ทธ๋ฃนํ๋๋ค. ํนํ, OPP๋ 4๊ฐ์ง ๊ฐ๋
์ ๊ฐ์ง๊ณ ์์ด ์ฌ์ฌ์ฉ์ฑ์ด ์ข๋ค. OOP 4๊ฐ์ง ๊ฐ๋
์บก์ํ(Encapsulation) ์์ฑ๊ณผ ๋ฉ์๋๋ฅผ ๋ฐ๋ก ์ ์ํ์ง ์๊ณ , ํ๋์ ๊ฐ์ฒด ์์์ ๋์จํ๊ฒ ๋ฌถ๋๋ค ์๋(๊ตฌํ์ ์จ๊ธฐ๊ณ , ๋์์ ๋
ธ์ถ์ํด) ๊ณผ ๋์จํ ๊ฒฐํฉ(์ธ์ ๋ ์์ ๊ฐ๋ฅ)์ ์ ๋ฆฌํ๋ค ์ถ์ํ(Abstraction) ์ ํ๊ธฐ์ ํ๋ก๋๊ฐ ๋์ ๋ณด์ด์ง ์์ง๋ง, ๋๊ตฌ๋ ์ ํ๊ธฐ๋ฅผ ์ฝ๊ฒ ์ฌ์ฉํ ์ ์๋ค ๋๋ฌด ๋ง์ ๊ธฐ๋ฅ์ด ๋
ธ์ถ๋์ง ์๊ฒ ํ์ฌ ์ฌ์ฉ ์์ ํผ๋์ ์์ค๋ค ์์(Inheritance) ์์์ ๋ถ๋ชจ๊ฐ ๊ฐ์ง ์ ์ ์๋ฅผ ๋์ผํ๊ฒ ๊ฐ๊ณ ์๋ค. ๊ทธ ๋์ผํ ๋ถ๋ถ์ ์ผ์ผํ ์ฐ์ง ์๊ณ , ๋ถ๋ชจ๋ฅผ ๋์ด์..
์ ์ฒด ๊ธ
๐ฉ๐ป java, mysql, android, php, javascript๋ฅผ ๋ค๋ฃน๋๋ค๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ ํ๋์ ๋ชจ๋ธ์ด ๋๋ ์ฒญ์ฌ์ง(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..