#
JavaScript#
๊ฐ์ฒด- ๊ฐ์ฒด ์ ์ธ
const ironMan = { 'name': 'ํ ๋์คํํฌ', 'actor': '๋ก๋ฒํธ ๋ค์ฐ๋ ์ฃผ๋์ด', 'alias': '์์ด์ธ๋งจ', 'key is string': true,};
๊ฐ์ฒด๋ { }
๋ก ๊ฐ์ธ๊ณ key: value
ํ์ด๋ก ์ด๋ฃจ์ด์ ธ ์๋๋ฐ, key
๋ ๋ฌธ์์ด๋ก ๊ณต๋ฐฑ์ด ์๋ค๋ฉด '
๋ก ๊ฐ์ธ์ผ ํ๋ค. ๋ํ ,
๋ฅผ ๋นผ๋์ผ๋ฉด error๊ฐ ๋ฐ์ํ๋ค.
- ๊ฐ์ฒด ํธ์ถ
console.log(ironMan);// Object {name: "ํ ๋์คํํฌ", actor: "๋ก๋ฒํธ ๋ค์ฐ๋ ์ฃผ๋์ด", alias: "์์ด์ธ๋งจ"}
console.log(ironMan.name);// ํ ๋์คํํฌ
console.log(ironMan.actor);// ๋ก๋ฒํธ ๋ค์ฐ๋ ์ฃผ๋์ด
console.log(ironMan.alias);// ์์ด์ธ๋งจ
- ๊ฐ์ฒด ๊ตฌ์กฐ ๋ถํด
const {alias, name, actor} = hero;const text = `${alias}(${name}) ์ญํ ์ ๋งก์ ๋ฐฐ์ฐ๋ ${actor} ์
๋๋ค.`;console.log(text);
๊ฐ์ฒด์์ ๊ฐ์ ์ถ์ถํด๋.
- ๊ฐ์ฒด ๋ด๋ถ ํจ์
const dog = { name: '๋ฉ๋ฉ์ด', sound: '๋ฉ๋ฉ!', say: function () { console.log(this.sound); },};
function()
์ ์ต๋ช ํจ์์ด์ง๋ง,function dogFunc()
์ฒ๋ผnamed
ํจ์๋ก ๋ง๋ค์ด๋ ๋๋ค.
์ด๋ ๊ฒ ํจ์๋ฅผ ๊ฐ์ฒด ๋ด๋ถ์ ์ ์ํ ์ ์๋ค.
๊ทธ๋ฐ๋ฐ ๋ง์ฝ ํ์ดํ ํจ์๋ฅผ ์ ์ํ๋ฉด ์ด๋ป๊ฒ ๋ ๊น?
const dog = { name: '๋ฉ๋ฉ์ด', sound: '๋ฉ๋ฉ!', say: () => { console.log(this.sound); },};
dog.say();
// TypeError: Cannot read property 'sound' of undefined
function
ํค์๋๋ฅผ ์ฌ์ฉํ ๊ฒฝ์ฐ this
๋ก ์์ ์ด ์ํ ์์น์ ์ฐ๊ฒฐ์ํค๋ ๊ฒ์ด ๊ฐ๋ฅ.
ํ์ดํ ํจ์์ ๊ฒฝ์ฐ ์๊ธฐ ์์ ์ด ์ํ this
๊ฐ ์ด๋์ธ์ง ๋ชจ๋ฅธ๋ค
const dog = { name: '๋ฉ๋ฉ์ด', sound: '๋ฉ๋ฉ!', say: function () { console.log(this.sound); },};
const cat = { name: '์ผ์น์ด', sound: '์ผ์น~',};
cat.say = dog.say;dog.say(); // ๋ฉ๋ฉ!cat.say(); // ์ผ์น~
// Errorconst dogSay = dog.say;const catSay = cat.say;dogSay();catSay();
cat.say = dog.say;
๋ก ํจ์๋ฅผ ํ ๋นํด์ค ์ ์๋๋ฐ, ๋ง์ฝ ์ธ๋ถ์ ์๋ const dogSay
์ ํ ๋นํ๋ค๋ฉด, ๋ง์ฐฌ๊ฐ์ง๋ก this
๊ฐ ์ด๋ scope
์ธ์ง๋ฅผ ์์ง ๋ชปํด error
๊ฐ ๋ฐ์ํ๋ค.
- getter์ setter ํจ์
// EX 1const dog = { _name: '๋ฉ๋ฉ์ด', get name() { console.log('_name์ ์กฐํํฉ๋๋ค.'); return this._name; }, set name(value) { console.log('์ด๋ฆ์ด ๋ฐ๋๋๋ค..' + value); this._name = value; },};
console.log(dog.name);dog.name = '๋ญ๋ญ์ด';console.log(dog.name);
// EX 2const numbers = { _a: 1, _b: 2, sum: 3, calculate() { console.log('calculate'); this.sum = this._a + this._b; }, get a() { return this._a; }, get b() { return this._b; }, set a(value) { this._a = value; this.calculate(); }, set b(value) { this._b = value; this.calculate(); },};
console.log(numbers.sum);numbers.a = 5;numbers.a = 6;numbers.a = 7;numbers.a = 8;console.log(numbers.sum);
get ํจ์์ sum ํจ์๋ ์ด๋ฆ์ด ๊ฐ์๋ ๋๋ค. ํ์ง๋ง ๋ณ์์ ์ด๋ฆ์ด ๊ฐ์ผ๋ฉด ์๋๋ค. ๋ฐ๋ผ์ ๋ณ์๋ช
์์ _
๋ฅผ ๋ถ์ฌ์ค๋ค.
EX2์์์ฒ๋ผ get, set์ ์ฌ์ฉํ ๋์ ์ฅ์ ์ a์ ๊ฐ์ด ๋ณํ ๋์ calculate ํจ์๋ฅผ ์คํํ์ฌ sum ๊ฐ์ ์ ๋ฐ์ดํธํ๋ฏ๋ก ํจ์จ์ ์ด๋ค.
- ๊ฐ์ฒด ๋ด์ฅ ํจ์
const doggy = { ์ด๋ฆ: '๋ฉ๋ฉ์ด', ์๋ฆฌ: '๋ฉ๋ฉ',};
console.log(doggy);
console.log(Object.entries(doggy));console.log(Object.keys(doggy));console.log(Object.values(doggy));
#
๋ฐฐ์ดJS์์ ๋ฐฐ์ด์ ํ์ ์ ์ ๊ฒฝ์ฐ์ง ์์๋ ๋๋ค. ex) [ 'a', 1, 'text' ]
๋ฐฐ์ด ๋ด์ฅํจ์
push
pop
length
#
๋ฐ๋ณต๋ฌธfor ๋ฌธ
while ๋ฌธ
for - of
const numbers = [10, 20, 30, 40, 50];
for (let number of numbers) { console.log(number);}
์ปฌ๋ ์ ์ ์ฉ ๋ฐ๋ณต ๊ตฌ๋ฌธ
- for - in
var obj = { a: 1, b: 2, c: 3,};
for (var prop in obj) { console.log(prop, obj[prop]); // a 1, b 2, c 3}
๊ฐ์ฒด์ ์์ฑ๋ค์ ๋ฐ๋ณตํ์ฌ ์์ ์ํ.
- continue
๋ฐ๋ณต๋ฌธ ์ค์ ๊ฑด๋๋ฐ๊ณ ๋ค์ ๋ฐ๋ณต์ ์คํ.
- break
๋ฐ๋ณต๋ฌธ์ ๋น ์ ธ๋๊ฐ.
- foreach
const superheroes = ['์์ด์ธ๋งจ', '์บกํด ์๋ฉ๋ฆฌ์นด', 'ํ ๋ฅด', '๋ฅํฐ ์คํธ๋ ์ธ์ง'];
superheroes.forEach((hero) => { console.log(hero);});
- map
const array = [1, 2, 3, 4, 5, 6, 7, 8];
const square = (n) => n * n;const squared = array.map(square);
console.log(squared);
// ๋ ๊ฐ๋ตํconst array = [1, 2, 3, 4, 5, 6, 7, 8];const squared = array.map(n => n * n;);
console.log(squared);
- indexOf
const superheroes = ['์์ด์ธ๋งจ', '์บกํด ์๋ฉ๋ฆฌ์นด', 'ํ ๋ฅด', '๋ฅํฐ ์คํธ๋ ์ธ์ง'];const index = superheroes.indexOf('ํ ๋ฅด');console.log(index);
- findIndex
const todos = [ { id: 1, text: '์๋ฐ์คํฌ๋ฆฝํธ ์
๋ฌธ', done: true, }, { id: 2, text: 'ํจ์ ๋ฐฐ์ฐ๊ธฐ', done: true, }, { id: 3, text: '๊ฐ์ฒด ๋ฐฐ์ด ๋ฐฐ์ฐ๊ธฐ', done: true, }, { id: 4, text: '๋ด์ฅ ํจ์ ๋ฐฐ์ฐ๊ธฐ', done: false, },];
const index = todos.findIndex((todo) => todo.id === 3);console.log(index);
find
filter