- νλ‘νΌν°μ λ©μλλ₯Ό κ°μ§ μ μμ΅λλ€.
- μ€λͺ : μΌλ° κ°μ²΄μ²λΌ ν¨μμλ ν€-κ° μμ νλ‘νΌν°λ₯Ό μΆκ°νκ±°λ λ΄μ₯λ νλ‘νΌν°λ₯Ό μ¬μ©ν μ μμ΅λλ€.
- ν΅μ¬ ν¨ν΄: ν¨μ.νλ‘νΌν°λͺ = κ°; λλ ν¨μ.λ©μλλͺ ();
- μμ:
function sayHello() { console.log("Hello!"); } sayHello.description = "μΈμ¬λ₯Ό νλ ν¨μμ λλ€."; // 컀μ€ν νλ‘νΌν° μΆκ° console.log(sayHello.description); // "μΈμ¬λ₯Ό νλ ν¨μμ λλ€." console.log(sayHello.name); // "sayHello" (λ΄μ₯ νλ‘νΌν°: ν¨μ μ΄λ¦) console.log(sayHello.length); // 0 (λ΄μ₯ νλ‘νΌν°: κΈ°λνλ μΈμμ μ) const numbers = [1, 2, 3]; // forEachλ Array.prototypeμ λ©μλμ§λ§, ν¨μ ννλ‘ μ‘΄μ¬ numbers.forEach(function printNum(num) { // μ΅λͺ ν¨μμ§λ§, μμ§μ μ΄λ¦μ λΆμΌ μ μμ console.log(num, printNum.name); // num, "printNum" (μ½λ°± ν¨μμ μ΄λ¦) });
- λ³μμ ν λΉλ μ μμ΅λλ€ (μΌκΈ κ°μ²΄, First-class citizen).
- μ€λͺ : ν¨μλ κ°(value)μΌλ‘ μ·¨κΈλμ΄ λ³μμ μ μ₯λ μ μμ΅λλ€. μ΄λ ν¨μλ₯Ό λ€λ₯Έ κ³³μΌλ‘ μ½κ² μ λ¬νκ±°λ μ¬μ¬μ©ν μ μκ² ν©λλ€.
- ν΅μ¬ ν¨ν΄: const λ³μλͺ = ν¨μ;
- μμ:
const greet = function(name) { return `Hello, ${name}!`; }; console.log(greet("World")); // "Hello, World!" const anotherGreet = greet; // λ€λ₯Έ λ³μμ ν λΉ console.log(anotherGreet("JavaScript")); // "Hello, JavaScript!"
- λ€λ₯Έ ν¨μμ μΈμλ‘ μ λ¬λ μ μμ΅λλ€ (μ½λ°± ν¨μ).
- μ€λͺ : ν¨μλ₯Ό λ€λ₯Έ ν¨μμ λ§€κ°λ³μλ‘ λ겨, νΉμ μμ μ΄ μλ£λ ν λλ νΉμ 쑰건μμ νΈμΆλλλ‘ ν μ μμ΅λλ€. μ΄κ² λ°λ‘ μ½λ°± ν¨μμ μ리μ λλ€.
- ν΅μ¬ ν¨ν΄: λ€λ₯Έν¨μ(function() { /* μ½λ°± λ‘μ§ */ });
- μμ:
function processUserInput(callback) { const name = "Lando Norris"; // μ¬μ©μ μ λ ₯μ΄λΌκ³ κ°μ callback(name); } processUserInput(function(name) { // ν¨μλ₯Ό μΈμλ‘ μ λ¬ console.log(`μλ νμΈμ, ${name}λ!`); // "μλ νμΈμ, Lando Norrisλ!" }); const numbers = [1, 2, 3, 4]; const evenNumbers = numbers.filter(function(num) { // filter λ©μλμ ν¨μ μ λ¬ return num % 2 === 0; }); console.log(evenNumbers); // [2, 4]
- λ€λ₯Έ ν¨μμμ λ°νλ μ μμ΅λλ€ (κ³ μ°¨ ν¨μ, ν΄λ‘μ ).
- μ€λͺ : ν¨μκ° λ€λ₯Έ ν¨μλ₯Ό μμ±νκ³ κ·Έ ν¨μλ₯Ό κ²°κ³Όκ°μΌλ‘ λ°νν μ μμ΅λλ€. μ΄λ ν΄λ‘μ (closure)μ κ°μ κ°λ ₯ν ν¨ν΄μ κ°λ₯νκ² ν©λλ€.
- ν΅μ¬ ν¨ν΄: function μΈλΆν¨μ() { return function λ΄λΆν¨μ() { /* λ‘μ§ */ }; }
- μμ:
function createGreeter(greeting) { return function(name) { // ν¨μλ₯Ό λ°ν return `${greeting}, ${name}!`; }; } const sayHelloTo = createGreeter("Hello"); const sayHiTo = createGreeter("Hi"); console.log(sayHelloTo("Max")); // "Hello, Max!" console.log(sayHiTo("Charles")); // "Hi, Charles!"
- λ°°μ΄μ΄λ κ°μ²΄μ κ°μ μλ£κ΅¬μ‘°μ μ μ₯λ μ μμ΅λλ€.
- μ€λͺ : ν¨μλ κ°μ΄κΈ° λλ¬Έμ, λ°°μ΄μ μμλ κ°μ²΄μ μμ± κ°μΌλ‘ ν¨μλ₯Ό μ μ₯ν μ μμ΅λλ€.
- ν΅μ¬ ν¨ν΄: const arr = [ν¨μ1, ν¨μ2]; λλ const obj = { doSomething: ν¨μ };
- μμ:
function add(a, b) { return a + b; } function subtract(a, b) { return a - b; } const operations = [add, subtract]; console.log(operations[0](10, 5)); // 15 (add ν¨μ νΈμΆ) console.log(operations[1](10, 5)); // 5 (subtract ν¨μ νΈμΆ) const calculator = { plus: add, minus: subtract }; console.log(calculator.plus(20, 7)); // 27
- prototype νλ‘νΌν°λ₯Ό κ°μ§λλ€.
- μ€λͺ : ν¨μκ° μ μλ λ, ν΄λΉ ν¨μλ prototypeμ΄λΌλ νΉλ³ν κ°μ²΄ νλ‘νΌν°λ₯Ό κ°κ² λ©λλ€ (νμ΄ν ν¨μ μ μΈ). μ΄ prototype κ°μ²΄λ ν΄λΉ ν¨μλ₯Ό μμ±μ(constructor)λ‘ μ¬μ©νμ λ μμ±λλ μΈμ€ν΄μ€ κ°μ²΄λ€μ λΆλͺ¨ μν μ νλ©°, νλ‘ν νμ κΈ°λ° μμμ ν΅μ¬μ λλ€.
- ν΅μ¬ ν¨ν΄: ν¨μλͺ .prototype.λ©μλλͺ = function() { /* λ‘μ§ */ };
- μμ:
function Car(brand) { this.brand = brand; } // Car ν¨μμ prototype κ°μ²΄μ λ©μλ μΆκ° Car.prototype.getBrand = function() { return this.brand; }; const myCar = new Car("McLaren"); // Carλ₯Ό μμ±μλ‘ μ¬μ© console.log(myCar.getBrand()); // "McLaren" // myCarλ Car.prototypeμ μ μλ λ©μλλ₯Ό μμλ°μ μ¬μ© κ°λ₯
- μμ±μ ν¨μ(Constructor Function)λ‘ μ¬μ©λ μ μμ΅λλ€ (new ν€μλμ ν¨κ»).
- μ€λͺ : new μ°μ°μμ ν¨κ» ν¨μλ₯Ό νΈμΆνλ©΄, κ·Έ ν¨μλ κ°μ²΄λ₯Ό μμ±νλ μμ±μ μν μ ν©λλ€. μ΄λ ν¨μ λ΄λΆμ thisλ μλ‘ μμ±λ κ°μ²΄λ₯Ό κ°λ¦¬ν΅λλ€.
- ν΅μ¬ ν¨ν΄: const μΈμ€ν΄μ€ = new ν¨μλͺ (μΈμ);
- μμ: (μ 6λ² Car μμ μ°Έκ³ )
- call(), apply(), bind() λ©μλλ₯Ό μ¬μ©ν μ μμ΅λλ€.
- μ€λͺ : λͺ¨λ ν¨μλ Function.prototypeμΌλ‘λΆν° μ΄ λ©μλλ€μ μμλ°μ΅λλ€. μ΄ λ©μλλ€μ ν¨μλ₯Ό νΈμΆνλ©΄μ this κ°μ λͺ μμ μΌλ‘ μ€μ νκ±°λ, μΈμλ₯Ό νΉμ λ°©μμΌλ‘ μ λ¬ν λ μ μ©ν©λλ€.
- ν΅μ¬ ν¨ν΄:
- ν¨μ.call(thisArg, arg1, arg2, ...)
- ν¨μ.apply(thisArg, [arg1, arg2, ...])
- const λ°μΈλ©λν¨μ = ν¨μ.bind(thisArg, arg1, ...);
- μμ:
function introduce(greeting, punctuation) { console.log(`${greeting}, my name is <span class="math-inline">\{this\.name\}</span>{punctuation}`); } const person1 = { name: "Lando" }; const person2 = { name: "Oscar" }; introduce.call(person1, "Hello", "!"); // Hello, my name is Lando! introduce.apply(person2, ["Hi", "."]); // Hi, my name is Oscar. const introduceLando = introduce.bind(person1, "Hey there"); introduceLando("!!"); // Hey there, my name is Lando!!
- Function μμ±μλ₯Ό ν΅ν΄ λμ μΌλ‘ ν¨μλ₯Ό μμ±ν μ μμ΅λλ€ (κΆμ₯λμ§ μμ).
- μ€λͺ : new Function(...) λ¬Έλ²μ μ¬μ©νλ©΄ λ¬Έμμ΄λ‘λΆν° ν¨μλ₯Ό λ§λ€ μ μμ΅λλ€. μ΄λ ν¨μκ° κ°μ²΄μ²λΌ 'μμ±'λ μ μμμ 보μ¬μ£Όμ§λ§, 보μ λ° μ±λ₯ λ¬Έμ λ‘ μ μ¬μ©λμ§ μμ΅λλ€.
- ν΅μ¬ ν¨ν΄: const ν¨μλͺ = new Function('μΈμ1', 'μΈμ2', 'ν¨μ λ³Έλ¬Έ');
- μμ:
const sum = new Function('a', 'b', 'return a + b;'); console.log(sum(5, 10)); // 15
- νΈμΆ κ°λ₯νλ€(Callable)!
- μ€λͺ : κ°μ²΄μ΄κΈ΄ νμ§λ§, νΉλ³ν () μ°μ°μλ₯Ό ν΅ν΄ μ€νλ μ μλ κ³ μ ν νΉμ§μ κ°μ§λλ€. μ΄κ²μ΄ ν¨μ κ°μ²΄λ₯Ό λ€λ₯Έ μΌλ° κ°μ²΄μ κ΅¬λΆ μ§λ κ°μ₯ ν° μ°¨μ΄μ μ λλ€.
- ν΅μ¬ ν¨ν΄: ν¨μλͺ ();
- μμ:
function uniqueAction() { console.log("I am callable!"); } uniqueAction.isObject = true; console.log(typeof uniqueAction); // "function" (νΉλ³ν μ’ λ₯μ κ°μ²΄) console.log(uniqueAction.isObject); // true uniqueAction(); // "I am callable!"
'π» FE > π JS' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
μλ°μ€ν¬λ¦½νΈ bind μΈμ μ°λ (0) | 2025.05.14 |
---|---|
λ€μν νμ΄ν ν¨μ ꡬ문 (0) | 2025.05.13 |
μ¬κ·μ μ (0) | 2025.04.26 |
μλ°μ€ν¬λ¦½νΈμμ onκ³Ό handleμ κ΄κ³μ λν΄ μμ보μλ€. (0) | 2025.04.20 |
λ°λλΌ JS ν΄λμ€ μ½μ§ κΈ°λ‘: μ€κ³λΆν° thisμμ μ¨λ¦κΉμ§ (0) | 2025.04.06 |