프로그래밍 16

CLR via C# | 4장) 타입의 기초

목차 4장에서 알 수 있는 내용 타입의 공통분모 object 타입 안정성 캐스팅 네임스페이스 런타임에서의 (타입 + 스레드 + 스택 + 힙)의 형성 방식 System.Object public 메서드 Equals 비교대상과 동일한 값인지 확인 (책에는 안 써있지만, 해시테이블 콜렉션에서 Key로 사용하려면 재정의 필수) hashCode는 int로, 중복발생 가능성이 존재 hashCode가 같고 Equals도 true 여야 동등객체 GetHashCode 해시 테이블 콜렉션에서 Key로 사용하려면 재정의 필수 객체 식별의 유일성이 충족되어야 함 ToString 일반적인 용도: 객체 현재 상태 설명, 디버깅 GetType Type 타입 클래스에서 파생된 객체 인스턴스 반환 (타입에 대한 정보가 담긴 객체) 비가..

프로그래밍/C# 2022.04.18

[JS] ... (Three Dots) Operator

ES6에서 추가된 문법 1. Rest Operator 객체 혹은 배열의 남은 값을 변수에 할당할 때 const obj = {a: 1, b:2, c:3, d:4, e:5}; const {a, b, ...restObj} = obj; // a와 b를 제외한 나머지 값들이 restObj에 객체로 할당된다 2. Spread Operator 객체 혹은 배열의 값을 합칠 때, 혹은 복사할 때 모든 값들만 꺼내서 사용할 때 (단, 값은 one depth는 deep copy지만 two depth 이상부턴 swallow copy가 된다.) const arr = [1,2,3]; const arrCopy = [...arr, ...arr]; // [1,2,3,1,2,3,] // 객체의 값들을 parameter로 대응해서 넘길 ..

프로그래밍/JS 2019.11.20

8장) 브라우저 객체 모델

BOM은 웹 페이지 콘텐츠와 무관하게 브라우저 기능을 노출하는 객체이다. 제대로 된 명세가 없는 기간이 길었기에 브라우저 제조사들은 자신들이 원하는 대로 BOM을 확장했고, 이는 흥미로운 결과를 낳기도 했지만 문제도 많이 생겼다. HTML5 명세에서 BOM의 주요 부분을 다룹니다. 8.1 window 객체 BOM의 핵심에는 브라우저의 인스턴스인 window 객체가 있다. window 객체는 브라우저 창의 자바스크립트 인터페이스 구실을 하고 다른 한 편으로는 ECMAScript Global 객체로 기능한다. 따라서 웹 페이지에서 정의한 모든 객체, 변수, 함수에서는 window가 Global 객체 구실을 하며 window에 정의된 parseInt()등의 메서드를 이용한다. 8.1.1 전역 스코프 전역에서 ..

프로그래밍/JS 2016.04.06

7장) 함수 표현식

이 장에서 다루는 내용 - 함수 표현식의 특징 - 함수와 재귀 - 클로저를 이용한 고유 변수 5장에서 배웠듯이 함수를 정의하는 방법은 함수 선언과 함수 표현식 두 가지이다. 함수 선언의 뚜렷한 특징은 '함수 선언 끌어올림'이다. 함수 표현식에는 여러 가지 형태가 있는데 가장 많이 쓰이는 형태는 다음과 같다.var funcName = function (arg) { };이렇게 생성된 함수는 함수 이름이 없으므로 익명 함수로 간주한다. (람다 함수라고 부르기도 함.)따라서 익명함수의 name 프로퍼티는 빈 문자열이다. if문 안에서도 함수 선언으로 정의된 함수는 끌어올려지므로 의도와 다르게 작동할 수 있어 주의해야 한다. 7.1 재귀재귀 함수를 사용할 때는 항상 함수 이름 대신 arguments.callee(..

프로그래밍/JS 2016.03.30

5장-6,7) 참조타입 - 원시 래퍼 타입, 내장된 싱글톤 객체

5.6 원시 래퍼 타입Boolean, Number, String은 원시 값을 편리하게 조작하기 위해 디자인된 참조 타입이다.이들은 다른 타입과 같이 동작하지만 대응하는 원시 값과 연관된 독특한 동작 방식도 가진다.원시 값을 읽을 때마다서 이에 해당하는 래퍼 타입이 이면에서 생성되므로 메서드를 사용할 수 있다.ex)var s1 = "some";var s2 = s1.substring(2);이 코드에서 s1은 원시 값인 문자열을 담고 있는 변수다.다음 행에서 s1은 substinrg()메서드를 호출하고 결과를 s2에 저장한다.원시 값은 객체가 아니므로 논리적으로 메서드를 가질 수 없지만 별다른 코드 없이도 메서드를 호출했다.사실은 이면에서 이를 수행되게 만드는 많은 코드가 실행된다.두 번째 줄에서 s1에 접근..

프로그래밍/JS 2016.02.01

5장-3,4,5) 참조 타입 - Date 타입, RegExp 타입, Function 타입

5.3 Date 타입자바 초기 버전의 java.util.Date에 기반한다.따라서 날짜와 시간을 저장할 때 1970년 1월 1일 0시부터 몇 밀리초가 지났는지 나타내는 숫자를 사용한다.1970년으로 부터 285,616년 전후의 날짜를 정확히 표현할 수 있다.생성 방법var now = new Date();매개변수를 넘기지 않으면 현재 날짜와 시간이 저장된다.밀리초를 넘기면 특정 날짜와 시간을 나타낼 수 있는데 이 계산은 복잡하므로이를 계산하는 메서드 Date.parse()와 Date.UTC()를 보통 사용한다.Date.parse()날짜를 표현하는 문자열을 받아 해당 문자열을 밀리초 표현으로 변환한다.- 월/일/년- 월이름 일, 년- 요일 월이름 일 년 시:분:초 타임존- YYYY-MM-DDTHH:mm:ss..

프로그래밍/JS 2016.01.20

5장-1,2) 참조 타입 - Object 타입, Array 타입

참조 값(객체)이란 특정 '참조 타입'의 인스턴스이다.ECMAScript에서 참조 타입은 데이터와 기능을 그룹으로 묶는 구조이다.참조 타입을 '클래스'라 부르는 것은 잘못된 표현이다.참조 타입은 객체가 가져야 할 프로퍼티와 메서드를 정의한다는 점 때문에 '객체 정의'라 불리기도 한다.(ECMAScript는 객체 지향 언어이지만 클래스나 인터페이스 같은 구조를 갖고 있지 않다. 객체(참조 값)는 특정 참조 타입의 '인스턴스'이다.객체를 생성할 때는 new 연산자 뒤에 '생성자'(객체를 생성하는 함수)를 쓴다.ex)var person = new Object();-> 참조 타입 Object의 인스턴스를 생성해서 변수 person에 할당한다. 5.1 Object 타입객체 생성법1. new 연산자와 Object ..

프로그래밍/JS 2016.01.20

6장-1) 객체 지향 프로그래밍 - 객체에 대한 이해

OOP는 일반적으로 클래스를 통해 같은 프로퍼티와 메서드를 가지는 객체를 여러 개 만든다는 특징이 있다.하지만 ECMAScript에는 클래스라는 개념이 없으며 ECMAScript의 객체는 다른 객체 지향 언어와 다르다.ECMAScript의 객체는 이름-값 쌍의 순서없는 그룹이며 각 값은 데이터나 함수가 될 수 있다. 6.1 객체에 대한 이해 객체 리터럴 표기법var person = {name: "sovovy",sayName: function(){alert(this.name);} } 6.1.1 프로퍼티 타입 (ECMAScript 5판 기준)프로퍼티의 특징을 내부적으로만 유효한 속성에 따라 설명한다.이 속성들은 JS엔진 내부에서 구현한 것으로 정의했다. (따라서 JS에서 직접적으로 접근하는 방법은 없다.)-..

프로그래밍/JS 2015.11.23

4장) 변수와 스코프, 메모리

4.1 원시 값과 참조 값ECMAScript의 변수는 원시 값과 참조 값 타입의 데이터를 저장할 수 있다.원시 값: 단순한 데이터 (Undefined, Null, Boolean, Number, String) (스택에 저장된다.) 참조 값: 여러 값으로 구성되는 객체를 가리킴 변수에 값을 할당하면 원시 값인지 참조 값인지 판단한다.- 원시 값은 변수에 저장된 실제 값을 조작한다. (값으로 접근한다.)- 참조 값은 메모리에 저장된 객체이다. 메모리 위치에 직접 접근하는 것이 안되므로 객체의 메모리 공간을 직접 조작하는 것은 불가능하다. 따라서 객체를 조작 할 때는 객체에 대한 '참조'를 조작한다. (참조로 접근한다.) 4.1.1 동적 프로퍼티 값이 변수에 저장되고 난 후 원시 값과 참조 값이 할 수 있는 일..

프로그래밍/JS 2015.11.22