Javascript (5) μΈλ€μΌν 리μ€νΈν Class ν΄λμ€ Class μλ°μ€ν¬ννΈλ νλ‘ν νμ κΈ°λ°μ κ°μ²΄μ§ν₯ μΈμ΄μ λλ€. static method or static properties νλ‘ν°νμ μ ν λΉλμ§ μκ³ μμ±μ ν¨μ κ°μ²΄μ μ§μ ν λΉλμ΄μλ νλ‘νΌν°μ λ©μλλ₯Ό static method, static propertiesλΌκ³ ν©λλ€. μμ±μ ν¨μλ₯Ό new μ°μ°μ μμ΄ ν¨μλ‘μ¨ νΈμΆν λ μ¬μ©λ©λλ€. μΈμ€ν΄μ€κ° μ§μ μ μΌλ‘ μ κ·Όν μ μμ΅λλ€. prototype method μμ±μ ν¨μ νλ‘ν νμ λ΄λΆμ ν λΉλ λ©μλλ€μ prototype methodλΌκ³ ν©λλ€. μΈμ€ν΄μ€κ° μ§μ μ μΌλ‘ μ κ·Όν μ μμ΅λλ€. μμ μμμ μ¬μ©νμ¬ μ½λμ μ¬μ¬μ©μ±μ λμΌ μ μμ΅λλ€. ES5 μμ±μ ν¨μμ νλ‘ν νμ , ν΄λ‘μ λ₯Ό μ¬μ©νμ¬ κ°μ²΄ μ§ν₯ νλ‘κ·Έλλ°μ ꡬνν μ μμ΅λλ€. .. κ°μ²΄ μ§ν₯ Prototype κ°μ²΄μ§ν₯ νλ‘κ·Έλλ° OOP(Object Oriented Programming) μ΄λ? μλ‘ κ΄λ ¨ μλ λ°μ΄ν°μ ν¨μλ₯Ό κ°μ²΄(νλμ μν μ μννλ λ©μλμ λ³μμ λ¬Άμ)λ‘ μ μν΄μ μλ‘ μνΈμμ©ν μ μλλ‘ νλ‘κ·Έλλ°ν΄λκ°λ κ²μ μλ―Έν©λλ€. κ° κ°μ²΄λ λ©μμ§λ₯Ό λ°μ μ μκ³ , λ°μ΄ν°λ₯Ό μ²λ¦¬ν μλ μμΌλ©°, λ λ€λ₯Έ κ°μ²΄μκ² λ©μμ§λ₯Ό μ λ¬ν μλ μμ΅λλ€. μλ°μ€ν¬λ¦½νΈλ prototypeμ κΈ°λ°μΌλ‘ κ°μ²΄μ§ν₯ νλ‘κ·Έλλ°μ ν΄λκ° μ μμ΅λλ€. κ°μ²΄μ§ν₯μ μ¬μ©νλ©΄ μ€λ³΅λλ κ΄λ ¨ κ°μ²΄λ₯Ό μ¬μ¬μ©ν μ μμ΄ μ€λ³΅μ μ΄λ μ λ μ€μΌ μ μκ³ , κ΄λ ¨ μλ κ°μ²΄λ€μ μν λΆλ΄μ μ’ λ νμ€νκ² ν μ μμ΄ κ°λ μ±μ΄ λμμ§κ³ μμ°μ±κ³Ό μ μ§λ³΄μ λ° νμ₯μ±μ΄ λμμ§λλ€. μμ±μ ν¨μμ μΈμ€ν΄μ€ μμ± μλ°μ€ν¬λ¦½νΈλ new μ°.. Javascript This μλ°μ€ν¬λ¦½νΈμμ thisλ μ€ν 컨ν μ€νΈκ° μμ±λ λ λ°μΈλ©λ©λλ€. μ¦, ν¨μκ° νΈμΆλ λ thisκ° κ²°μ λλ€λ κ²μ λλ€. μλ μμ€λ₯Ό 보면 μ΄λ»κ² νΈμΆνλλμ λ°λΌ thisκ° λ¬λΌμ§λλ€. var student = { name: "jennie", myName: function () { console.log(this.name); }, }; var myName = student.myName; myName(); // undefined student.myName(); // jennie κ²°κ³Όκ° λ€λ₯Έ μ΄μ λ myName()μ ν¨μλ‘ νΈμΆμ νκ³ student.myName()λ λ©μλλ‘ νΈμΆνκΈ° λλ¬Έμ λλ€. ν¨μ νΈμΆ μ λͺ¨λ κ°μ²΄λ μ μ κ°μ²΄μ νλ‘νΌν°μ λλ€ μ μ 컨ν μ€νΈλ₯Ό μ€ννλ 주체λ μ μ κ°μ²΄μ λλ€. λͺ¨λ .. μ€ν 컨ν μ€νΈ μ€ν 컨ν μ€νΈλ? μλ°μ€ν¬λ¦½νΈκ° μ€νλλ νκ²½μΌλ‘ ν¨μλ₯Ό μ€νν λ νμν 쑰건, νκ²½μ 보λ₯Ό μ 곡νλ κ°μ²΄μ λλ€. μ€ν 컨ν μ€νΈλ₯Ό μ΄ν΄νλ©΄ Scope, hoisting, closure, thisμ κ°μ μ€μν λμμ μ΄ν΄ν μ μμ΅λλ€. μ€ν 컨ν μ€νΈμ λ΄λΆ var a = 1; function outer() { console.log(a); // μ€ν μμ(1): 1μΆλ ₯ function inner() { // var a; --> undefined (νΈμ΄μ€ν ) console.log(a); // μ€ν μμ(2): 1μΆλ ₯ var a = 3; } inner(); console.log(a); // μ€ν μμ(3): 1μΆλ ₯ } outer(); console.log(a); // μ€ν μμ(4): 1μΆλ ₯μλλ μ μ½λλ₯Ό.. λ°μ΄ν° νμ (μμν vs μ°Έμ‘°ν) μλ°μ€ν¬λ¦½νΈμμ λ°μ΄ν° νμ μλ μλμ κ°μ΄ μμνκ³Ό μ°Έμ‘°νμΌλ‘ λλ©λλ€. μλ°μ€ν¬λ¦½νΈ λ©λͺ¨λ¦¬ ꡬ쑰λ μ€ν λ©λͺ¨λ¦¬(μ μ ν λΉ, λ³μ, μμν λ°μ΄ν° μ μ₯)μ ν λ©λͺ¨λ¦¬(λμ ν λΉ, μ°Έμ‘°ν λ°μ΄ν°, μ μ₯) μμμΌλ‘ λλμ΄ μμ΅λλ€. μμν(Primitive Type) κ°μ²΄λ₯Ό μ μΈν λͺ¨λ νμ μ μμ κ°(λΆλ³ κ°)μΌλ‘ κ°μ κ·Έλλ‘ ν λΉν©λλ€. boolen null undefined number string symbol (ES6) μλμ κ°μ΄ newNameμ nameμ ν λΉνκ³ λ€μ "jennie"λ‘ κ°μ μ¬ν λΉ ν ν nameκ³Ό newNameμ νμΈν΄ 보면 λ°μ΄ν°μ λΆλ³μ±(newNameμ κ°μ μ¬ν λΉ ν΄λ nameμ κ°μ΄ λ³νμ§ μμ)μ νμΈν μ μμ΅λλ€. let name = "sara"; let newN.. μ΄μ 1 λ€μ