목록web programming/JavaScript (9)
roadmap
{ } 표기법으로 빈 객체를 생성할 수도 있지만 생성자를 사용하여 객체를 생성할 수 있다 1 2 3 4 5 6 7 8 9 10 11 function Make(a,b,c) { this.a = a; a = 1111; } var z = new Make(0); console.log(z); var array = new Array(1,1,2,3); var today = new Date(); Colored by Color Scripter cs 생성자 함수는 일반적으로 반환값이 없다. 하지만 생성자 함수에서 결과값으로 객체를 반환하면 반환값을 가질 수는 있다. 이 객체는 new 문장의 결과가 된다. 그리고 생성자 안의 this가 가리키고 있던 객체는 폐기된다. 프로토타입은 객체지향적인 방법으로 프로그램을 작성하게 해준..
javascript 는 메모리 할당/해제를 자동으로 해주는 가비지 컬렉터를 사용한다. 앞서 말했다시피, 더 이상 해당 데이터를 참조할 수 없는 경우, 자동으로 메모리가 해제된다. 링크에서 자세한 메모리 해제 알고리즘도 볼 수 있다. https://developer.mozilla.org/ko/docs/Web/JavaScript/Memory_Management 자바스크립트의 메모리관리 메모리 생존주기는 프로그래밍 언어와 관계없이 비슷하다. developer.mozilla.org 함수 내부에서 호출된 변수는 함수가 종료될 때, 그 메모리를 반환하고 사라진다 정적 변수는 별다른 조작이 없는 한, 계속 메모리를 차지한다 그러니 가능하면 로컬 변수를 사용하도록 하자 1 2 3 4 5 6 7 8 9 10 11 12 ..

자바스크립트에서는 런타임 에러가 나타날 때마다 예외를 발생시킨다 또한 프로그램에서 throw문을 사용하여 명시적으로 예외를 발생시킬 수도 있다 1 2 3 4 5 6 7 function factorial(x) { if (x 1; x--) { f = f*x; } return f; } Colored by Color Scripter cs try/catch/finally 문은 js의 예외 처리 기법이다. try절은 처리할 예외가 발생할지도 모를 블록을 정의한다. catch 절은 try 블록에서 예외가 발생하는 경우 호출되는 블록이다. finally 절은 try의 예외와 관계없이 항상 실행이 보장되어야 할 코드를 넣는다. 1 2 3 4 5 6 7 8 try { var n = prompt("Please enter a..
javascript의 배열은 진정한 의미의 배열이 아닌 배열처럼 다룰 수 있는 동적 자료구조이다 js에서는 배열은 추가 기능을 조금 지닌 객체이다 typeof연산자를 콘솔에 입력해보자 1 2 var array = [1,2,3,4,5,6,7,"string"]; typeof array; // 'object' cs C나 자바 같은 언어는 배열이 가질 수 있는 원소의 개수를 지정하고, 개수가 변하지 않는다 그러나 자바스크립트는 임의 개수의 원소를 가졌으며 언제든 변경(삭제,추가)할 수 있다 자바스크립트의 배열은 Array클래스의 인스턴스이며, Array 클래스의 다양한 메서드를 호출할 수 있다 이렇게 배열과 유사한 객체들은 실제 배열의 원소들에 대해 반복 작업을 하는 알고리즘을 그대로 활용할 수 있다 (배열을 ..
객체는 이름과 값으로 구성된 프로퍼티의 집합이다 리터럴이나 생성자를 이용해서 만들 수 있다 1 var obj = {1:'do', 2:'JavaScript', 3:5, 'index':'hello, world'}; // 이름:값 cs 객체의 프로퍼티에 접근하는 방법은 다른 언어와 비슷하게 식별자(.)를 이용하거나 [] 를 사용하여 배열처럼 접근 할 수 있다 1 2 3 4 var obj = {1:'do', 2:'JavaScript', 3:5, 'index':'hello, world'}; // 이름:값 console.log(obj[1]); console.log(obj['index']); console.log(obj.index); Colored by Color Scripter cs 숫자에 접근 할 수 없으므로 o..
자바스크립트는 기본타입과 참조타입을 가지고 있다 본질적으로 값, 참조 개념과 같은 것이다 먼저 C언어에서 문자열을 저장하면 그것을 수정할 수 없다 1 2 3 4 5 6 7 8 #include int main() { char* s = "why?"; s[0] = 's'; // *s과 같음 printf("%s\n", s); } cs 디버깅해보면 s[0]이 0x.... 메모리 번지수를 가리킨다고 나오며 오류가 뜬다 이유는 문자열을 저장하면 일단 그것이 텍스트 세그먼트로 저장된다 그런데 텍스트 세그먼트는 프로그래머가 수정할 수 없고 읽기만 가능하다 s[0] = "s"; 는 s 위치의 것을 문자 's'로 수정하는 것이므로 오류가 나온다 그런데 이렇게 하면 어떨까? 1 2 3 4 5 6 7 8 #include int..
cpu는 우리가 만든 코드의 데이터들을 저장할 때, 데이터마다 다른 곳으로 저장한다 스택 힙 데이터 세그먼트 텍스트 세그먼트 스택 함수, 지역변수(static변수를 제외한 모든 변수)가 저장된다 함수가 종료 될 때, 해제된다 (재귀함수가 호출 될 때, 다량의 함수와 변수가 스택에 push된 후 pop이 일어난다) 힙 프로그래머가 동적 할당하면 이 곳으로 저장되고 해제할 때 비운다 힙과 스택은 사실 같은 공간을 공유한다 스택 또는 힙이 커져서 메모리가 넘치는 것을 stack over flow, heap over flow라고 한다 데이터 세그먼트 전역변수, static변수가 저장된다 프로그램 시작 시 할당되고, 종료시 해제된다 텍스트 세그먼트 코드 세그먼트라고도 한다 소스코드가 저장된다 상수, 텍스트가 저장..

먼저 클라이언트 사이드(웹페이지)를 표현하는 언어의 역할을 상기하자 HTML은 웹페이지의 문서를 작성하기 위한 언어다 CSS는 웹페이지를 디자인하기 위한 언어다 1 2 3 4 5 6 7 8 9 10 11 /* javascript코드가 들어갈 부분 */ Colored by Color Scripter cs JavaScript는 웹페이지를 제어하기 위한 언어다 js는 모든 변수가 객체(object)이다 객체는 모든 자료형(정수, 실수, 문자등)를 포함할 수도 있고 함수나 배열, 또 같은 객체도 포함 할 수 있는 자료구조이다 C를 아는 사람은 구조체와 비슷한데, 함수도 포함할 수 있다고 생각하면 된다 객체(object) : 모든 타입을 포함 가능하며, object에 포함되기도 한다 속성(property) : 객..