전체 글 (234) 썸네일형 리스트형 [JavaScript] 객체 펼침 연산자(Spread Operator) 활용하기 오늘은 객체 펼침 연산자에 대해 알아보려고 한다. 먼저, 객체에서 펼침 연산자를 사용하는 간단한 코드를 살펴보자.const book = { title: 'Reasons and Persons', author: 'Derek Parfit'};const update = { ...book, year: 1984 };console.log(book);console.log(update);위 코드에서 ...book은 기존 객체의 모든 키-값 쌍을 새로운 객체로 복사한다. 이후 year: 1984와 같이 추가적인 키-값 쌍을 덧붙일 수 있다. 결과적으로 book 객체는 변경되지 않고, 새로운 객체 update가 생성된다. 동일한 키가 있을 때객체 펼침 연산자의 중요한 특징 중 하나는 동일한 키가 여러 번 선언될.. [ASP.NET Project] DI 컨테이너 설정하기 DependencyResolver 설정우선, DI 컨테이너를 연결하기 위해 DependencyResolver를 설정해야 한다. 이를 위해 프로젝트에 DependencyResolver.cs라는 파일을 생성하자.namespace SportsStore.WebUI.Infrastructure{ public class NinjectDependencyResolver : IDependencyResolver { private IKernel kernel; public NinjectDependencyResolver(IKernel kernel) { this.kernel = kernel; AddBindings(); } .. [ASP.NET Project] ASP.NET MVC5를 이용한 SportsStore 응용 프로그램 생성하기 ASP.NET MVC5를 사용하여 SportsStore 응용 프로그램을 생성한다.하나의 솔루션을 만들고, 그 안에 3개의 프로젝트를 추가하여 역할을 나눌 예정이다.각각의 프로젝트는 다음과 같은 역할을 수행한다. 프로젝트 구성 Domain데이터 저장 및 불러오기를 담당하는 핵심 역할을 한다.Entity Framework를 사용하여 리파지토리를 작성할 계획이다.WebUI사용자 인터페이스(UI)를 구현하며, 컨트롤러와 뷰가 포함된다.애플리케이션의 주요 동작을 처리하는 프로젝트다.UnitTestsDomain과 WebUI에서 작성한 로직에 대해 단위 테스트를 작성한다.Mocking 라이브러리를 사용해 테스트 환경을 구성할 예정이다. 도구 및 패키지 설치 프로젝트가 제대로 동작하도록 필요한 도구와 패키지를 설치.. [ASP.NET MVC5] Ninject로 의존성 주입(DI) 구현하기 의존성 주입(DI)이란? **의존성 주입(Dependency Injection)**은 인터페이스와 DI 컨테이너를 활용해 MVC 응용프로그램 내부의 구성 요소들을 서로 분리시키는 설계 방식이다. DI 컨테이너는 다음과 같은 역할을 수행한다:인터페이스 구현 인스턴스 생성: 객체가 의존하는 인터페이스 구현체의 인스턴스를 생성한다.생성자 주입: 생성된 인스턴스를 의존하는 객체의 생성자에 주입한다.결합도 감소: 클래스 간의 강한 결합을 제거하고 느슨한 결합을 구현한다. DI를 도입하지 않은 경우: 강한 결합DI를 도입하지 않으면 클래스 간의 결합도가 높아지고, 재사용성과 확장성이 떨어진다. 아래는 DI 없이 강하게 결합된 구조의 예제다. Product.csusing System;using System.Col.. [ASP.NET MVC5] 람다식을 활용한 필터링과 간결한 코드 작성 델리게이트를 사용한 필터링 Product 개체를 대상으로 델리게이트를 수행하여 원하는 방식으로 필터링할 수 있다. 다음은 기본 델리게이트를 사용한 필터링 예제다. 확장 메서드로 필터링 구현Func 타입의 델리게이트를 받아 필터링 조건을 적용하는 확장 메서드 Filter를 작성했다. public static IEnumerable Filter( this IEnumerable productEnum, Func selectorParam) { foreach (Product product in productEnum) { if (selectorParam(product)) { yield return product; } }} 이 메서드는 조건을 만족하는 Prod.. [JavaScript] 객체 복사와 Object.assign의 활용 객체의 변경과 사이드 이펙트 배열과 마찬가지로 객체도 필드를 추가하거나 설정할 때 **사이드 이펙트(Side Effect)**가 발생할 수 있다. 특히, 기존 데이터를 유지하면서 새로운 필드를 추가하거나 기본값으로 채우려면 신중한 처리가 필요하다.예를 들어, 아래와 같은 기본값 객체와 새로 추가할 데이터를 가진 객체를 보자.const defaults = { author: '', title: '', year: 2017, rating: null};const book = { author: 'Joe Morgan', title: 'Simplifying JavaScript'}; 기존 방식: Object.keys와 반복문 활용defaults와 book을 병합하려면 아래와 같은 방식으로 각 필드를 처리할 .. [JavaScript] 정적인 키-값 탐색 배열과 객체의 차이점 이전 포스팅에서 배열에 대해 살펴봤다. 배열은 구조적으로 유사하고, 다른 데이터와 교체가 자유로운 경우 사용하기 적합한 컬렉션이다. 그러나 배열만으로는 표현하기 어려운 상황도 존재한다.예를 들어, 다음은 색상 코드를 저장한 배열이다.const colors = ['#d10202', '#19d836', '#0e33d8'];이 배열에서는 각각의 색상 코드가 어떤 색상을 의미하는지 명확히 알기 어렵다. 이러한 경우, 키-값 형태의 컬렉션을 사용하는 것이 더 적합하다. 객체: 키-값 형태의 정적인 데이터 다루기 객체는 변화가 적고 구조화된 데이터를 다룰 때 유용하다. 다음은 색상 코드와 색상 이름을 키-값 쌍으로 표현한 예다. const color = { red: '#d10202', .. [ASP.NET MVC5] 확장 메서드 확장 메서드로 클래스 기능 확장하기 확장 메서드는 직접 변경할 수 없는 클래스에 새로운 메서드를 추가할 수 있는 편리한 방법이다.이번 포스팅에서는 확장 메서드를 이용해 타사에서 제공받은 Product 객체의 총합을 구하는 기능을 ShoppingCart 클래스에 추가하는 방법을 알아본다. 문제 상황Product 객체는 타사로부터 제공받은 클래스여서 소스 코드를 직접 수정할 수 없다.ShoppingCart 클래스에 담긴 Product 객체들의 **총 가격(Total Price)**을 구해야 한다.이 경우 확장 메서드를 활용하면 간단하게 문제를 해결할 수 있다. ShoppingCart 클래스 생성먼저, Product 객체를 리스트로 담는 ShoppingCart 클래스를 생성한다.ShoppingCart.c.. 이전 1 2 3 4 5 ··· 30 다음