DOM 개요 문서 객체 모델(Document Object Model) 즉, DOM은 HTML과 XML 문서의 내용을 조작하고 나타내는 기반 API다. 노드의 종류는 세가지이다. 계층 구조의 가장 위쪽에는 문서 전체를 나타내는 Document 노드가 있고, 아래쪽으로는 HTML 요소를 나타내는 Element 노드와 텍스트를 나타내는 Text 노드가 있다. Document, Element, Text는 Node 객체의 서브 클래스이며, 각각 레퍼런스 부분에 설명되어 있다. Documnet 타입은 HTML 또는 XML 문서를 나타내며, Element 클래스는 그 문서의 요소를 나타낸다. 반면 제네릭 타입의 서브 클래스읜 HTMLDocument와 HTMLElement는 좀더 구체적으로 HTML의 문서와 요소만을 ..
타이머 setTimeout() 첫번째 인자에 함수, 두번째 인자에 delay시간, 그 다음인자에 파라미터를 전달할 수 있다. 이 파라미터는 첫번째 인자의 함수에 전달된다. delay 시간 후에 함수가 실행된다. var timeoutID = window.setTimeout(func[, delay, param1, param2, ...]); var timeoutID = window.setTimeout(code[, delay]); window.setTimeout(function, milliseconds); 기본 예시 (함수뒤에 ()를 붙이지 않는다.) function hi() { alert('hi'); } setTimeout(hi, 1000); //1000이 1초 파라미터 전달 function hi(a, b) ..
1부에선 콬어 자바스크립트에 대해 설명했고 이제부터는 일반적으로 클라인트 측 자바스크립트라고 부르는 웹브라우저에서 사용하는 자바스크립트에 대해 알아본다. 클라이언트 측 자바스크립트 Window 객체는 클라이언트 측 자바스크립트의 기능과 API에서 핵심적인 진입점이다. 이 객체는 웹브라우저의 창이나 프레임을 나타내고, 그러므로 특정 창(window)을 Window 객체로 참조할 수 있다. 명시적으로 window가 사용되지 않을때가 있는데, 이는 클라이언트 측 자바스크립트에서는 Window 객체가 전역 객체이기 때문이다. 이는 Window 객체가 유효범위 체인의 최상위에 있고, Window 객체의 프로퍼티와 메서드가 사실상 전역 변수와 전역 함수라는 의미다. Click Here to Reveal Hidden..
라이노를 사용하여 스크립트로 자바를 다루기 라이노는 자바로 작성된 자바스크립트 인터프리터이고, 자바스크립트 프로그램에서 자바 플랫폼 API의 강력함을 쉽게 활용할 목적으로 설계되었다. 라이노는 자바스크립트 원시 타입들을 자바 원시 타입으로 자동 변환하여 자바에 전달하고, 이와 반대로 자바스크립트 또한 자바 프로퍼티를 가져올 수 있고 자바 메서드를 호출할 수도 있다. 노드를 사용한 비동기 I/O 노드는 C++로 작성된 빠른 자바스크립트 인터프리터로 프로세스, 파일, 네트워크 소켓 등과 관련한 저수준 유닉스 API와 HTTP 클라이언트와 서버 API에 대한 바인딩을 포함하고 있다. 특별한 이름이 붙은 동기화 메서드 몇 개를 제외하면 노드의 모든 바인딩은 비동기적이다.
자바스크립트의 서브셋은 대부분 보안을 목적으로 하고 있고, 광고 서버와 같은 신뢰할 수 없는 곳에서 온 스크립트라도, 보안 서브셋을 사용하여 작성되었다면 그 스크립트는 안전하게 실행될 수 있다. 이 장에서는 자브스크립트 확장을 다룬다. 자바스크립트 서브셋 좋은 부분들 더글라스 크락포드는 책에서 자스 서브셋을 다루는데, 이는 생각하기에 사용할 가치가 있는 부분만으로 구성했다. 이 서브셋의 목적은 언어를 단순화하고, 애매한 부분과 결점을 숨기며, 궁극적으로는 프로그래밍을 좀더 쉽게 하고 더 나은 프로그램을 만들 수 있도록 하는 것이다. 크락포드의 서브셋에는 with, continue, eval()이 없고 함수 정의 표현식만을 사용한다. 쉼표 연산자, 비트 연산자, ++, --, ==, !=도 없다. 보안을 ..
정규 표현식은 문자의 패텬을 나타내는 객체다. 자스의 RegExp 클래스는 정규 표현식을 표현하고, String과 RegExp에는 정규 표현식을 사용하여 강력한 패턴 매칭을 수행하는 메서드와 텍스트상에서 특정 텍스트를 찾아서 바꾸는 함수가 정의되어 있다. 정규 표현식의 정의 자스에서 정규 표현식은 RegExp 객체로 표현된다. 물론 RegExp 객체는 RegExp() 생성자를 사용하여 만들어지지만, 생성자보다는 정규 표현식 리텉럴 문법이 더 자주 사용된다. 정규 표현식 리터럴은 한 쌍의 슬래시(/) 문자 사이에 위치한 문자들로 지정된다. 리터럴 문자 모든 영문자와 숫자는 그 문자 그대로 정규 표현식에서 매치된다. 알파벳이 아닌 문자들은 역슬래시로 시작하는 이스케이프 문자열을 통해 지원한다. 몇 가지 구두..
클래스와 프로토타입 자스에서 클래스는 프로토타입 객체로부터 프로퍼티를 상속받은 객체의 집합이다. 따라서 프로토타입 객체는 클래스의 핵심 기능이라고 할 수 있다. 만약 프로토타입 객체를 정의하고 이 프로토타입을 상속하는 객체를 생성하기 위해 inherit 함수를 사용한다면, 자스에서는 클래스를 정의한 것이다. //range 객체를 반환하는 팩터리 함수 function range(from, to) { var r = inherit(range.methods); r.from = from; r.to = to; return r; } range.methods = { includes: function(x) { return this.from 0) s += ", "; s += v; }); return s + "}"; }, ..
함수는 한 번 정의하면 몇번이든 실행할 수 있고 호출할 수 있는 자바스크립트 코드 블록이다. 함수는 매개변수라고 불리는 식별자 목록이 포함될 수 있는데 이 매개변수는 몸체 내에서 지역 변수처럼 취급된다. 함수 호출 시에는 함수의 매개변수로 값이나 arguments를 제공한다. 어떤 객체의 프로퍼티로 할당된 함수를 해당 객체의 메서드라 한다. 어떤 함수가 객체 상에서 호출되거나 객체를 통해 호출될 때, 이 객체는 호출 컨텍스트이거나 호출된 함수에서 this 값이다. 새로 생성된 객체를 초기화하는데 쓰이는 함수를 생성자라고 한다. 자바스크립트 함수는 다른 함수 내에 중첩되어 정의될 수 있고, 함수는 해당 함수가 정의되어 있는 유효범위에 속한 어떤 변수에도 접근할 수 있다. 이는 자바스크립트 함수가 클로저이며..