π¦
21μΌμ°¨
Part 4. JavaScript Level up
Ch 1. JS λ°μ΄ν°
Ch 1. JS λ°μ΄ν°
μ£Όμ
- JS λ¬Έλ²
μ£Όμ λ΄μ©
π κ°μ²΄
μ μ (static) λ©μλ: prototypeμ΄ λΆμ΄ μμ§ μλ λ©μλ => μ€μ λ°μ΄ν° κ°μ²΄μ μ§μ μ¬μ©ν μ μλ€.
- object.assign(target, sources): νλ μ΄μμ μΆμ² κ°μ²΄(sources)λ‘λΆν° λμ κ°μ²΄(target)λ‘ μμ±μ 볡μ¬
const userAge = {
// key: value
name: "Yujin",
age: 23,
};
const userEmail = {
name: "Yujin",
email: "yujinny00@gmail.com",
};
const target = Object.assign({}, userAge);
console.log(target);
console.log(userAge);
console.log(target === userAge);
// μλ‘ λ€λ₯Έ λ©λͺ¨λ¦¬ μ£Όμλ₯Ό λ°λΌ λ΄.
const a = { k: 123 };
const b = { k: 123 };
console.log(a === b);
- object.keys(obj): key λ€λ§ μΆμΆνμ¬ μλ‘μ΄ λ°°μ΄λ‘ λ³ν
const user = {
name: "Yujin",
age: 23,
email: "hyjinny00@gmail.com",
};
const keys = Object.keys(user);
console.log(keys);
// ['name', 'age', 'email']
console.log(user["email"]);
const values = keys.map((key) => user[key]);
console.log(values);
π ꡬ쑰 λΆν΄ ν λΉ
const user = {
name: "Yujin",
age: 23,
email: "hyjinny00@gmail.com",
address: "USA",
};
const { name: yujin, age, address = "Korea" } = user;
// {address = "Korea"} : κΈ°λ³Έκ° μ§μ
console.log(`μ¬μ©μμ μ΄λ¦μ ${name}μ
λλ€.`);
console.log(`${yujin}μ λμ΄λ ${age}μ
λλ€.`);
console.log(`${yujin}μ μ΄λ©μΌ μ£Όμλ ${user.email}μ
λλ€.`);
console.log(address);
const fruits = ["Apple", "Banana", "Cherry"];
const [, , b] = fruits;
console.log(b);
π μ κ° μ°μ°μ (Spread) : νλμ λ°°μ΄ λ°μ΄ν°λ₯Ό μΌν(,)λ‘ κ΅¬λΆνλ κ°κ°μ μμ΄ν μΌλ‘ μ κ°ν΄μ μΆλ ₯
const fruits = ["Apple", "Banana", "Cherry", "Orange"];
console.log(fruits);
console.log(...fruits);
// console.log('Apple', 'Banana', 'Cherry')
const toObject = (a, b, ...c) => ({
a,
b,
c,
});
console.log(toObject(...fruits));
π λΆλ³μ± (Immutability)
μμ λ°μ΄ν°: String, Number, Boolean, undefined, null
- λ°μ΄ν°κ° 'λΆλ³'νκΈ° λλ¬Έμ λ°μ΄ν°μ μκΉμκ° λκ°μΌλ©΄ κ°μ λ°μ΄ν°λΌκ³ λ΄λ 무방νλ€.
let a = 1;
let b = 4;
console.log(a, b, a === b); // a bμ λ©λͺ¨λ¦¬ μ£Όμκ° λ€λ₯΄κΈ° λλ¬Έμ μΌμΉνμ§ μλλ€.
b = a;
console.log(a, b, a === b);
a = 7;
console.log(a, b, a === b);
let c = 1; // μμ λ°μ΄ν°λ ν λ² λ§λ€μ΄μ§λ©΄ μλ‘ λ§λ€μ΄μ§λ κ²μ΄ μλλΌ 'λΆλ³'νλ€.
console.log(b, c, b === c);
μ°Έμ‘°ν λ°μ΄ν°: Object, Array, Function
- λ°μ΄ν°κ° λΆλ³νλ κ°λ μ΄ μλκΈ°('κ°λ³'νκΈ°) λλ¬Έμ, μ μΈν λ λ§λ€ μλ‘μ΄ λ©λͺ¨λ¦¬ μ£Όμμ λ°μ΄ν°λ€μ΄ ν λΉλμ΄ μκΉμκ° λκ°λλΌλ κ°μ λ°μ΄ν°κ° μλ μ μλ€.
- (μ£Όμ) ν μͺ½μ μμ νλ©΄ μλμΉ μκ² λ€λ₯Έ μͺ½λ μμ λλ€.
- (ν΄κ²°) '볡μ¬'λΌλ κ°λ μ ν΅ν΄μ λ°μ΄ν°λ₯Ό λ©λͺ¨λ¦¬ μμμ λΆλ¦¬νλ€.
let a = { k: 1 };
let b = { k: 1 };
// μ°Έμ‘°ν λ°μ΄ν°λ μλ‘μ΄ κ°μ λ§λ€ λ λ§λ€, μλ‘μ΄ λ©λͺ¨λ¦¬ μ£Όμμ ν λΉλλ€. => λΆλ³μ±μ΄ μλ€. 'κ°λ³'νλ€.
// (μ£Όμ) κ°μ λ©λͺ¨λ¦¬λ₯Ό λ°λΌλ³΄κ³ μλ μ¬λ¬ κ°μ λ³μκ° μμ λ, ν μͺ½μ λ³μμ μλ κ°μ μμ νλ©΄ λ€λ₯Έ κ°μ΄ μλνμ§ μκ² λ°κ»΄μ Έ μλ μνκ° λ μ μλ€.
console.log(a, b, a === b); // a bμ λ©λͺ¨λ¦¬ μ£Όμκ° λ€λ₯΄κΈ° λλ¬Έμ μΌμΉνμ§ μλλ€.
a.k = 7;
b = a;
console.log(a, b, a === b);
a.k = 2;
console.log(a, b, a === b);
let c = b;
console.log(a, b, c, a === c);
π μμ 볡μ¬μ κΉμ 볡μ¬
- κΉμ λ³΅μ¬ (lodash - ._cloneDeep())
https://lodash.com/docs/4.17.15#cloneDeep
import _ from "lodash";
const user = {
name: "Yujin",
age: 23,
emails: ["hyjinny00@gmail.com"],
};
// μμ 볡μ¬
// const copyUser = Object.assign({}, user);
// const copyUser = { ...user };
// κΉμ 볡μ¬
const copyUser = _.cloneDeep(user);
console.log(copyUser === user);
user.age = 13;
console.log("user", user);
console.log("copyUser", copyUser);
console.log("------");
console.log("------");
// κΉμ λ³΅μ¬ => μ°Έμ‘° λ°μ΄ν° μ μ°Έμ‘° λ°μ΄ν°(emile)μ ν λ² λ κΉμ 볡μ¬λ₯Ό ν΄μ€μΌ λ¨.
user.emails.push("hyjinny00@naver.com");
console.log(user.emails === copyUser.emails);
console.log("user", user);
console.log("copyUser", copyUser);
λλμ
μ§κΈκΉμ§ λ°°μ΄ JS λ¬Έλ²λ€μ΄ μ§μ μ μΌλ‘ μΉμ¬μ΄νΈλ₯Ό λ§λλλ° μ΄λ€ λμμ΄ λ μ§ μΆμμ μΌλ‘ νμ΅ν κ²μ΄λΌκ³ λ§ν μ μλ€. κ·Έλμ μ§κΈ λ°°μ΄ κ²λ€λ‘ μ΄λ»κ² μΉμ¬μ΄νΈλ₯Ό λ§λλμ§ ??? μνμΌ μ μλ€.
νμ§λ§ JSλ₯Ό ν΅ν΄μ λ°μ΄ν°λ₯Ό μ²λ¦¬νλ κ³Όμ μμ²΄κ° μΉ μ¬μ΄νΈλ₯Ό λ§λλλ° μ€μν μμ©μ νλ€. κ·Έλ¬λ―λ‘ JS λ°μ΄ν°λ₯Ό μ¨μ ν μλ¬νκ³ κ΄λ¦¬νμ§ λͺ»νλ©΄ κ²°κ΅μλ μΉ μ¬μ΄νΈλ₯Ό λ§λλλ° μ§μ₯μ΄ μκΈ΄λ€.
κ²°κ΅ μ°λ¦¬λ μ§κΈ 'JS' νλ‘κ·Έλλ° μΈμ΄ λ¬Έλ² μ체λ₯Ό λ°°μ΄ κ²μ΄κ³ , μ΄κ²μ ν΅ν΄ μΉ μ¬μ΄νΈλ₯Ό λ§λλ λ°©λ²μ λ€μͺ½μμ Vue, Reactλ₯Ό νμ΅νλ μκ°μ μΆ©λΆν μμ λ³Όκ±°λ€.
κ·Έλ¬λκΉ μ§κΈμ μΉ μ¬μ΄νΈλ₯Ό μ μνλ κ±°μλ ??? μ΄κ² μ§λ§ μ‘°κΈμ μ΄κ²μ λ΄λ €λκ³ , JS νμ΅ μκ°μλ λ¬Έλ² μ체μ μ§μ€ν΄μ νμ΅μ νλ©΄ μ€νλ € μΆνμ λμμ΄ λ κ±°λ€.
μ€μ΄ μ΄λ² κ°μ μ΄λ°μ λ§μ νμ κ±΄λ° μ’μ λ§μΈκ±° κ°μμ κ°μ Έμλ€!!!
'π¬ > γ γ γ γ γ γ μ±λ¦°μ§' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
23μΌμ°¨ (0) | 2022.02.26 |
---|---|
22μΌμ°¨ (0) | 2022.02.25 |
20μΌμ°¨ (0) | 2022.02.14 |
γ γ γ γ γ γ μ±λ¦°μ§ μ€ν¨νλμ,,,,,,,,, λ°νν,,,,,,,,,,,,,,,, ππ€£π π₯ππ’ππ²π¨π°π±π₯Άπ¦π¦π¦ (0) | 2022.02.13 |
ν¨μ€νΈμΊ νΌμ€ μ±λ¦°μ§ 19μΌμ°¨ (0) | 2022.02.11 |