프로그램에서 함수를 실행시키면 Call Stack에 함수 호출 정보가 쌓이게 되고, 변수나 인자같은 함수 실행에 필요한 정보를 유지하고 실행 과정을 추적하는데 사용된다. 마찬가지로 자바스크립트도 함수 호출 시 이런 정보를 관리하는데, 이를 실행 컨텍스트라고 부른다. 함수가 호출되면 실행 컨텍스트가 생성되고, 실행 컨텍스트 스택에 쌓인다. 스택 가장 위에 위치하는 실행 컨텍스트가 현재 실행되고 있는 컨텍스트다. 실행 컨텍스트 생성 과정 아래 코드와 같은 함수가 있을 때, 함수를 호출해서 실행 컨텍스트가 생성된 뒤 실행 컨텍스트가 어떻게 쓰이는지 알아보자. function func(arg1, arg2) { let a = 1, b = 2; function func2() { return a + b; } retu..
자바스크립트는 프로토타입 기반의 객체지향 프로그래밍을 지원한다. 자바스크립트의 모든 객체는 [[Prototype]]이라는 숨겨진 프로퍼티가 존재하는데, 이 프로퍼티가 객체의 부모 프로토타입 객체를 가리킨다. 앞선 글에서 생성자 함수를 호출하면, 생성자 함수의 prototype 프로퍼티가 새로 생성된 객체의 [[Prototype]] 프로퍼티에 설정된다고 설명했다. 그림 1과 같이 프로토타입 객체가 설정된 객체는 프로토타입 객체의 메서드를 이용할 수 있다. 아래 코드를 보자. // 생성자 함수 function Person(name, age, gender) { this.name = name; this.age = age; this.gender = gender; } // Person 프로토타입에 showInfo ..
자바스크립트의 this는 조금 특별하다. 이번 글에서는 자바스크립트의 this에 대해 알아보자. this 바인딩 C나 자바의 this는 인스턴스의 컨텍스트를 가리키는 반면에, 자바스크립트의 this는 호출된 방식과 위치에 따라 달라진다. 객체의 메서드를 호출할 때 this 객체의 프로퍼티가 함수일 경우 이를 메서드라고 부른다. 메서드를 호출하면 메서드의 this는 해당 메서드를 호출한 객체로 바인딩된다. let obj = { name : "kook", getName : function() { return this.name; } } let otherObj = { name : "other", } otherObj.getName = obj.getName; console.log(obj.getName()); // ..
자바스크립트에서 함수는 특별한 객체 타입이다. 이번 글에서는 자바스크립트의 함수에 대해 알아본다. 함수 정의 자바스크립트의 함수를 정의 하는 방법은 3가지가 있다. 함수 선언문 (Function Statement) 함수 표현식 (Function Expression) Function() 생성자 함수 이용 함수 선언문 (Function Statement) 함수 선언문은 function 키워드를 이용하여 함수를 정의하는 방식이다. function add(x, y) { return x + y; } console.log(add(3, 4)); // 7 C나 자바의 함수 선언과 달리 매개변수에 타입을 지정해주지 않는다. 함수 표현식 (Function Expression) 자바스크립트의 함수는 일급 객체라서 변수에 할..
자바스크립트의 데이터 타입은 기본 타입과 참조 타입으로 나뉜다. 기본 타입 컴파일 언어의 기본 타입처럼 그 자체가 하나의 타입을 나타내는 데이터 타입이다. Number 64비트 부동 소수이다. C언어는 정수, 부동소수 타입으로 나뉘지만, 자바스크립트에서는 모두 Number로 처리된다. 따라서 정수끼리의 연산을 해도 소수점이 잘리지 않는다. console.log(5 / 2); // 2.5 String 문자열 타입이다. ' 또는 "로 감싸서 생성한다. 특이한 점은 한번 생성한 문자열은 바꿀 수 없다는 것이다. 따라서 한번 생성한 문자열은 읽기만 가능하다. let str = 'test'; console.log(str); // test str[0] = 'T'; console.log(str); // test (안..
포인트 클라우드를 다루거나 각종 3D 시뮬레이션을 만들다 보면 정점이 매쉬 안에 존재하는지 판단해야 할 때가 있다. 이번 글에서 이 문제를 해결하는 방법을 알아보자 다각형 안의 정점 판별 어떤 정점이 다각형 안에 존재하는지 판단하는 방법은 여러 가지가 있다. 가장 유명한 방법 중 하나는 barycentric coordinates를 이용하는 것이다. 간단히 설명하자면, 아래 그림 1처럼 삼각형 ABC의 정점 3개를 이용해 새로운 좌표계(원점 A, 기저1 A->B, 기저2 A->C)를 만들어서 정점이 삼각형 안에 존재하는지 판별하는 것이다. 만약 정점 P가 삼각형 바깥에 있다면 그림 1의 초록색 벡터가 기저벡터에 대해서 0보다 작거나 1보다 크게될 것이다. 아래 그림 2는 정점 P가 삼각형 바깥에 있을 때의..
Spring은 Locale에 따라 다국어 메시지 처리를 위해 MessageSource라는 이름의 전략 인터페이스를 제공해준다. 이번 글에서는 MessageSource를 이용해 다국어 처리를 하는 방법을 알아보자 MessageSource Spring이 메시지를 가져올 때 사용하는 MessageSource의 구현체는 아래 두 가지가 있다. ResourceBundleMessageSource: 리소스 번들(properties 파일)로 부터 메시지를 읽는다. ReloadableResourceBundleMessageSource: 리소스 번들이 수정되면 애플리케이션을 재시작하지 않고 다시 로딩하여 메시지를 읽는다. Spring에서 MessageSource 객체를 사용하기 위해선 아래와 같이 "messageSource..
스프링은 애플리케이션 전 계층에서 도메인 객체를 검증할 수 있는 인터페이스를 제공한다. 이번 글에서는 spring의 bean validation을 통해 어떻게 controller의 파라미터를 controller에 비즈니스 로직을 추가하지 않고 검증할 수 있는지 알아보자. Validator interface Spring은 도메인 객체를 검증할 수 있도록 Validator 인터페이스를 도입했다. Validator 인터페이스는 객체를 검증하는데 실패하면 Errors 객체에 에러를 등록함으로써 동작한다. Validator 인터페이스는 아래의 두가지 메서드를 가지고 있다. supports(Class): 매개변수로 전달된 클래스를 검증할 수 있는지 여부를 반환 validate(Object, org.springfra..
- Total
- Today
- Yesterday
- nodejs
- Barycentric coordinates
- @Bean
- chunk
- JavaScript
- @Component
- Linux
- Express
- Closure
- @Qualifier
- Tasklet
- mybatis
- spring batch
- unity
- 클로저
- Check point within polygon
- thymeleaf 변수 인식
- Bean
- Bin
- npm
- spring
- thymeleaf cannot resolve
- @Autowired
- MySQL
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |