Dandy Now!
  • [ 언어·프레임워크/JavaScript ]
    [JavaScript] 프로토타입 이해하기
    2025-06-10 21:55:42
    JavaScript의 프로토타입 이해하기JavaScript에서 프로토타입(Prototype)은 객체 지향 프로그래밍의 핵심 개념 중 하나이다. 이는 객체가 다른 객체의 속성과 메서드를 상속받을 수 있도록 하는 메커니즘을 제공한다. 클래스 기반 상속과는 다른, 프로토타입 기반 상속이라는 독특한 방식을 사용한다.1. 프로토타입의 개념JavaScript의 모든 객체는 [[Prototype]]이라는 내부 슬롯을 가지며, 이는 다른 객체를 참조한다. 이 참조는 해당 객체의 프로토타입이라고 불린다. 객체에서 특정 속성이나 메서드를 찾을 때, 먼저 자신의 속성을 탐색하고 없으면 [[Prototype]]이 가리키는 객체에서 찾는다. 이 과정이 계속 연결되어 프로토타입 체인(Prototype Chain)을 형성한다.__..
  • [ 언어·프레임워크/JavaScript ]
    [JavaScript] 커링 함수 이해하기
    2025-06-10 21:31:03
    JavaScript에서 커링 함수 이해하기JavaScript에서 커링(Currying) 함수는 특정 패턴으로 동작하는 함수이다. 여러 개의 인수를 받는 함수를 단일 인수를 받는 여러 개의 함수로 분할하는 과정을 말한다. 이는 함수형 프로그래밍의 핵심 개념 중 하나로, 유연하고 재사용 가능한 코드를 작성하는 데 도움을 준다.1. 커링 함수의 개념커링은 함수가 받는 인수의 개수를 줄이는 기술이다. 원래 함수가 f(a, b, c)와 같이 세 개의 인수를 받는다면, 커링을 적용하면 f(a)(b)(c)와 같이 하나의 인수를 받는 함수들을 순차적으로 호출하는 형태로 바뀐다.예시:// 커링을 적용하지 않은 일반 함수function add(x, y) { return x + y;}console.log(add(2, 3)..
  • [ 언어·프레임워크/JavaScript ]
    [JavaScript] 객체 유효성 검사로 Proxy 이해하기
    2025-04-23 09:54:46
    객체 유효성 검사로 Proxy 이해하기JavaScript로 개발할 때 객체 데이터의 무결성을 지키는 것은 중요하다. 예를 들어 사용자 정보 객체에서 나이는 양수여야 하고, 이름은 빈 문자열이 아니어야 하는 규칙이 있을 수 있다. 이런 유효성 검사 로직을 깔끔하게 구현하는 방법이 필요하다.이 글에서는 JavaScript의 Proxy 객체를 사용하여 객체 유효성 검사를 구현하는 방법을 소개하고자 한다. Proxy를 이용하면 객체 접근을 중간에서 제어하여 유효성 검사 로직을 더 체계적이고 우아하게 작성할 수 있다.1. JavaScript Proxy란 무엇인가?Proxy 객체는 다른 객체(대상 target)를 감싸는 래퍼(wrapper)이다. 이 래퍼를 통해 대상 객체에 대한 기본적인 동작(속성 접근, 할당, ..
  • [ 언어·프레임워크/JavaScript ]
    [JavaScript] 리플렉트(Reflect) 완벽 정복: JavaScript 메타 프로그래밍의 숨겨진 능력
    2025-04-21 15:42:13
    리플렉트(Reflect) 완벽 정복: JavaScript 메타 프로그래밍의 숨겨진 능력JavaScript 개발 여정에서 객체는 핵심적인 역할을 수행한다. 우리는 객체의 속성에 접근하고, 값을 할당하며, 메서드를 호출하는 등 다양한 상호작용을 한다. 오늘 이 시간에는 이러한 기본적인 객체 동작을 더욱 강력하고 섬세하게 제어할 수 있는 JavaScript의 내장 객체, 리플렉트(Reflect)에 대해 심층적으로 탐구하는 시간을 갖는다. 리플렉트가 무엇인지, 어떤 용도로 활용될 수 있는지, 그리고 실제 코드 예제를 통해 그 강력한 능력을 확인해본다. 이 글을 통해 여러분도 리플렉트의 매력에 빠져 JavaScript 코딩 실력을 한 단계 끌어올리기를 기대한다.1. 리플렉트(Reflect)란 무엇인가?리플렉트는 ..
  • [ 언어·프레임워크/JavaScript ]
    [JavaScript] JavaScript 배열 메서드, 무엇을 바꾸고 무엇을 반환할까?
    2025-04-18 10:11:42
    JavaScript 배열 메서드, 무엇을 바꾸고 무엇을 반환할까?JavaScript에서 배열을 다룰 때 다양한 메서드를 사용하게 된다. 하지만 각 메서드가 원본 배열을 변경하는지, 어떤 값을 반환하는지 헷갈릴 때가 많다. 이 글은 JavaScript 배열 메서드의 특징을 한눈에 파악하고자 작성했다.배열 메서드, 꼼꼼하게 알아야 하는 이유배열 메서드를 제대로 이해하지 못하면 예상치 못한 side effect가 발생하거나, 원하는 결과를 얻지 못할 수 있다. 특히 원본 배열을 변경하는 메서드는 주의해서 사용해야 한다.JavaScript 배열 메서드 요약MethodModifies Original ArrayReturns a ValueentriesNoYesfillYesYesfilterNoYesfindNoYesfi..
  • [ 언어·프레임워크/JavaScript ]
    [JavaScript] 안정 정렬 vs 불안정 정렬: JavaScript `sort()` 메서드의 숨겨진 진실
    2025-04-18 09:56:10
    안정 정렬 vs 불안정 정렬: JavaScript sort() 메서드의 숨겨진 진실JavaScript에서 배열을 정렬할 때 흔히 사용하는 sort() 메서드, 과연 완벽할까? 오늘은 sort() 메서드의 숨겨진 진실, 바로 안정 정렬과 불안정 정렬에 대해 알아보겠다.안정 정렬(Stable Sort)이란?안정 정렬은 정렬 후에도 동일한 값을 가진 요소들의 원래 순서가 그대로 유지되는 정렬 알고리즘이다. 마치 질서정연한 줄 세우기처럼, 키가 같은 사람들은 원래 서 있던 순서대로 줄을 서는 것이다.불안정 정렬(Unstable Sort)이란?반면 불안정 정렬은 동일한 값을 가진 요소들의 원래 순서가 바뀔 수 있는 정렬 알고리즘이다. 키가 같은 사람들의 순서가 뒤죽박죽 섞일 수도 있다는 뜻이다.JavaScript..
  • [ 언어·프레임워크/JavaScript ]
    [JavaScript] JavaScript Array.includes() 와 객체에서 구조적 동일성과 참조 동일성 문제
    2025-04-17 11:42:11
    JavaScript Array.includes() 와 객체에서 구조적 동일성과 참조 동일성 문제JavaScript에서 Array.prototype.includes() 메서드를 사용할 때, 객체와 원시 값(숫자, 문자열 등)을 다룰 때 어떻게 동작하는지 이해하는 것이 중요핟다.핵심 차이: 참조 vs. 구조원시 값의 경우, includes()는 배열의 요소 중 검색하는 값과 엄격하게 같은 (===) 요소가 있는지 확인한다.하지만 객체의 경우, includes()는 구조적 동일성이 아닌 참조 동일성을 확인한다. 즉, 배열이 메모리에서 정확히 동일한 객체 인스턴스에 대한 참조를 포함하는지 확인하며, 단순히 동일하게 보이는 객체(즉, 동일한 속성과 값을 가진 객체)를 확인하지 않는다.코드 예제예제를 통해 이를 설..
  • [ 언어·프레임워크/JavaScript ]
    [Javascript] call(), apply()의 공통점과 차이점
    2025-03-01 23:13:34
    call(), apply()의 공통점과 차이점JavaScript의 apply()와 call() 메서드는 함수를 호출할 때 this 컨텍스트를 지정하고 인수를 전달하는 데 사용된다. 두 메서드는 비슷한 기능을 하지만, 인수를 전달하는 방식에서 차이가 있다.1. call() 메서드call() 메서드는 함수를 즉시 호출하면서 첫 번째 인수로 this 컨텍스트를 지정하고, 나머지 인수들을 순서대로 전달한다.문법: function.call(thisArg, arg1, arg2, ...)thisArg: 함수 내부에서 this로 사용할 객체.arg1, arg2, ...: 함수에 전달할 인수들.2. apply() 메서드apply() 메서드도 함수를 즉시 호출하면서 첫 번째 인수로 this 컨텍스트를 지정하지만, 인수들을..