C++ 스타일 C 코드 // C++ 스타일 C 코드 예 #include typedef struct USERDATA { int age; char name[32]; void(*print)(struct USERDATA* pUser); } void printData(USERDATA* pUser) { printf("%d, %s\n", pUser->age, pUser->name); } int main() { USERDATA user = { 30, "2DC", printData }; user.print(&user); return 0; } 위의 코드는 C언어를 C++ 스타일로 짜본 것이다. C언어는 클래스/객체 대신 구조체를 사용하고, 구조체는 기본적으로 메서드를 멤버로 둘 수 없다. 따라서 함수 포인터 멤버를 구조체..
아래 함수는 문제가 있다. 매개변수 startAt에 객체를 직접 할당해버리기 때문이다. 만약 remainDateCalculator에 let today = new Date('2023-12-13') 과 같은 Date 객체를 인수로 넣고 호출한다면 today 변수는 오염이 될 것이다. 이 함수에 Date 객체를 인수로 넣은 후 실행하게 되면 startAt.setDate(startAt.getDate() + 5)로 인해 파라미터 startAt 은 강제적으로 +5일이 된 Date 객체가 된다. 해결 방법 이러한 에러를 파라미터 차원에서 방지해주기 위해서는 remainDateCalculator(new Date()) 와 같이 호출해서 사용하거나, startAt은 무조건 원시값(string)만 올 수 있도록 보장해주어야..
자바스크립트에는 여덟가지 자료형이 있다. 그 중 일곱개(숫자형, 문자열, 불린값 등)는 오직 하나의 데이터만 담을 수 있어 원시형(Primitive type)라고 불린다. 객체형은 원시형과 달리 다양한 데이터를 담을 수 있다. (키로 구분된 데이터 집합이나 복잡한 개체(entity)를 저장할 수 있다.) 객체는 자바스크립트의 거의 모든 면에 녹아있는 개념이므로 자바스크립트를 잘 다루려면 객체를 잘 이해하고 있어야 한다. 객체는 중괄호 {...}를 이용해 만들 수 있다. 중괄호 안에는 '키(key) : 값(value)' 쌍으로 구성된 프로퍼티(property)를 여러개 넣을 수 있는데 키에는 문자형, 값엔 모든 자료형이 허용된다. 프로퍼티 키는 프로퍼티 이름이라고도 불리운다. 서랍장을 상상하면 객체를 이해..
객체 기본 객체는 관련된 데이터와 함수의 집합이다. 객체는 프로퍼티(Property)과 메서드(Method)로 구성된다. 프로퍼티는 명시적으로 선언된 것으로 정의할 수 있고 메서드는 동적인 개념으로 선언된 것이다. 자바스크립트에서는 객체에 선언된 함수를 메서드라고 칭한다. const DC = { age: 30; // Property state: function(behavior) { console.log('behavior'); } // Method } 상수(Constant)로 설정된 DC라는 객체이다 해당 객체의 age는 30살으로 명시되어 있다. 그래서 age는 DC 객체 내 프로퍼티이다. 해당 객체의 state는 함수로써 값에 따라 출력이 바뀐다. 따라서 state는 DC 객체 내 메서드이다. 객체 동..