라벨이 자바스크립트인 게시물 표시

javascript 정규표현식

 문자  매치되는 것  알파벳 문자와 숫자 조합  같은 조합의 문자들  \0  널문자(\u0000)  \t  탭(\u0009)  \n  줄바꿈(\u000a)  \v  수직 탭(\u000b)  \f  폼 피드(\u000c)  \r  캐리지 리턴(\u000d)  \xnn  16진수 nn에 해당하는 라틴 문자  \uxxxx  16진수xxxx에 해당하는 Unicode문자  \cX  제어 문자 ^C  문자  매치되는 것  [...]  대괄호 안에 있는 문자  [^...]  대괄호 안에 없는 문자  .  줄바꿈이나 Unicode 줄마침 문자를 제외한 아무 문자  \w  ASCII 문자  \W  ASCII 문자가 아닌 문자  \s  Unicode 공백 문자  \S  Unicode 공백 문자가 아닌 문자  \d  ASCII 숫자  \D  ASCII 숫자가 아닌 문자  [\b]  백스페이스  문자  의미  {n,m}  앞의 항목이 적어도 n번 이상 나타나고, m 번보다는 적게 나타난다.  {n,}  앞의 항목이 적어도 n번 이상 나타난다.  {n}  앞의 항목이 정확히 n번 나타난다.  ?  앞의 항목이 0또는 한번 나타난다.  +  앞의 항목이 한 번 이상 나타난다는 것을 의미한다.  *  앞의 항목이 0번 이상 나타난다는 것을 의미한다.  문자  의미  |  대체. 왼쪽이나 오른쪽의 부분 표현식을 매치시킨다.  (...)...

javascript 모듈

규칙 만약 모듈이 전역 네임스페이스에 심벌을 추가한다면, 문서에 그 심벌이 무엇인지 명확하게 기술되어야 한다. 만약 모듈이 전역 네인스페이스에 심벌을 추가한다면, 그 심벌의 이름과 모듈이 작성되어 있는 파일 이름 간에 명확한 관계가 있어야 한다.

javascript

Closures JavaScript 에서 이러한 public, private, privileged 멤버들의 구현이 가능한 것은, closure 때문이다. closure 의 의미는(Javascript의 closure 구현이 시사하는 바는), inner function 은 outer function 의 var 선언 변수와 매개변수에 접근할 수 있으며, 심지어 outer function 이 리턴된 이후에도 가능하다는 뜻이다. 이는 굉장히 강력한 언어 속성인데, JavaScript 에서 어떻게 이것이 가능한지 파헤쳐놓은 책은 아직은 없다. 대부분 아예 언급할 생각조차 없는 것 같다. private 과 privileged 멤버는 object 가 생성될 때에만 만들 수 있다. 반면, public 멤버는 언제든 만들 수 있다. Patterns Public function Constructor(...) {     this.membername = value; } Constructor.prototype.membername = value; Private function Constructor(...) {     var that = this;     var membername = value;     function membername(...) {...} } Note: function 구문 function membername(...) {...} 은 var membername = function(...) {...}; 표현의 축약이다. Privileged function Constructor(...) {     this.membername = function (...) {...}; } (원 문에) Copyright 2001 Douglas Crockford. All Rights Reserved Wrrrldwide.

javascript 모조클래스

생성자 function Rectangle(w,h){ this.width=w; this.height=h; } var rect1= new Rectagle(2,4); //rect1={width:2,height:4} 생성자 함수에는 일반적으로 반환값이 없다. 다시 말해, 생성자 함수는 this키워드가 가리키는 객체를 초기화시킬 뿐 아무런 값도 반환하지 않는다. 하지만 생성자 함수에서 결과값으로 객체를 반환하면 반환값을 가질 수 있으며, 이때 반환되는 객체는 new 문장의 결과값이 된다. 그리고 생성자 안의 this가 가리키고 있던 객체는 페기도니다. 프로토타입과 상속 자바스크립트의 모든 객체는 프로토타입이라고 불리는 또 다른 객체를 내부적으로 참조할 수 있다. 그리고 객체는 프로토타입의 프로퍼티들을 자신의 프로퍼티로 가져온다. 다시 말해 자바스크립트의 객체는 자신의 프로토타입에 있는 프로퍼티를 상속받는다. function Rectangle(w,h){ this.width=w; this.height=h; } Rectangle.prototype.area=function(){return this.width * this.height;} 상속받은 프로퍼티의 읽기와 쓰기 읽을때 객체에 프로퍼티가 없으면 프로토타입 객체에 프로퍼티를 검사한다. 쓸때는 프로토타입을 검사하지 않는다. 객체에 해당 프로퍼티가 없으면 그 프로퍼티를 만든다. 내장형 타입의 확장 프로토타입을 사용하면 내장객체의 프러퍼티를 만들수 있다. 하지만 좋은 방법은 아니다. 내장형 네이티브 클래스의 프로토타입을 확장하는 것이 안전하고 유용하다. 자바스크립트의 클래스 시뮬레이션 자바나 C++ 자바스크립트간의 비교 자바스크립트의 객체는 프로퍼티의 개수에 제한이 없으며, 동적으로 추가할 수도 있다. 자바나 C++에서 클래스는 객체의 구조를 정의한다. 인스턴스 프로퍼티 인스턴스 메서드 클래스 프로퍼티 클래스 메소드 공통적인 객체 메서드 toString()메서드 valuOf()메서드 비교메서드  a<b  a...

javascript Function() 생성자

Function()생성자를 사용하면 실행시점에 자바스크립트 코드를 동적으로 생성하고 컴파일할 수 있다. 이러한 점에서 Function() 생성자는 전역 함수인 eval() 함수와 유사하다. Function()생성자는 호출될 때마다 함수 몸체를 파싱하고 새로운 함수 객체를 생성한다. 따라서 만약 생성자 호출이 루프안이나 자주 호출되는 함수 안에서 이루어진다면, 이러한 작업은 비효율적일 수 있다. 반면에 루프와 함수안의 함수 리터럴이나 중첩된 함수는 그것이 나타날 때마다 매번 다시 컴파일되지 않는다. 또한 함수 리터럴이 나타날 때마다 생성되는 함수는 서로 다른 함수 객체가 생성된 것이 아니다. 끝으로 Function()생성자의 가장 중요한 점은 생성된 함수가 어휘적 유효범위를 사용하지 않는다는 것이다. 대신 Function()생성자에 의해 생성된 함수는 다음 코드에서 확인할 수 있듯이 마치 최상위 레벨의 함수인 것처럼 컴파일된다.

자바스크립트 문장 문법

 문장  문법  용도  break  break;  bread 레이블;  가장 안쪽의 루프, switch문, 또는 '레이블'로 명명된 문장에서 빠져나온다.  case  case 표현식:  switch 문 내부의 문장에 레이블을 붙인다.  continue  continue;  continue 레이블;  가장 안쪽의 루프, 또는 '레이블'로 명명된 루프를 재시작한다.  default  default;  switch 문에서 디폴트 문장에 레이블을 붙인다.  do/while  do   문장  while(표현식);  while 루프를 만드는 다른 방법  empty  ;  아무일도 안함  for  for(초기화; 테스트; 증가)   문장  편리하게 쓸 수 있는 루프  for/in  for(변수 in 객체)   문장  객체에 속한 프로퍼티들에 대한 루프를 돈다.  function  function 함수 이름 ([전달인자1 [..., 전달인자 n]) {   문장 }  함수를 선언한다.  if/else  if(표현식)   문장1 [else 문장2]  조건부 코드 실행  label  식별자: 문장  '문장'에 '식별자'라는 이름을 붙인다.  return  return[표현식]  함수를 반환한다. 또는 함수를 '표현식'의 값으로 반환한다.  switch  switch(표현식){   문장  }  case 또는 default: 로 레이블이 붙은 문장들로 다중 분기  throw  throw 표현식;  예...

javascript ===, ==, >=, <=연산자

=== 연산자가 두 값이 일치하는지 아닌지 판단하는 데에는 다음과 같은 규칙들을 따른다. 두 값의 타입이 다르다면 두 값은 일치하지 않는다. 두 값이 모두 숫자이고 값이 같다면 두 값은 일치한다. 단, 적어도 하나의 값이 NaN일 경우 두 값은 일치하지 않는다. NaN값은 어느 값과도 일치하지 않는다. 어떤값이 NaN인지 확인하려면 전역 함수인 isNaN()을 사용하라. 두 값이 모두 문자열이고 같은 위치에 정확히 같은 문자들을 갖고 있다면 두 값이 일치한다. 만일 문자열의 길이나 내용이 다른 경우 두 값은 일치하지 않는다. 몇몇 경우 Unicode 표준에서 한 문자열을 인코딩 하는 방법이 두 가지 이상일 수 있음을 유의하라. 하지만 자바스크립트에서 효율성을 위해 엄격히 문자 대 문자 비교의 원칙으로 문자열을 비교하며, 모든 문자열은 비교되기 이전에 '정규 형식'으로 변환되어 있다고 가정한다. 두 값이 모두 불리언 값 true인 경우, 또는 두 값이 모두 불리언 값 false인 경우, 두 값은 일치한다. 두 값이 같은 객체, 배열 또는 함수를 참조할 경우 두 값이 일치한다. 만일 두 값이 서로 별개의 객체를 참조할 경우 두 값은 일치하지 않는다. 설사 두 객체의 프로퍼티가 일치하거나 두 배열의 원소가 일치한다고 하더라고 마찬가지다. 두 값이 모두 null일 경우, 또는 두 값이 모두 undefined일 경우, 두 값은 일치한다. == 연산자가 두 값이 동등한지 아닌지 판단하는 데에는 다음의 규칙들을 따른다. 두 값의 타입이 같은 경우 두 값이 일치하는지 테스트 한다. 두 값이 일치할 경우 그 둘은 동등하다. 두 값이 일치하지 않는 경우 동등하지 않다. 두 값의 타입이 다른 경우라 할지라도 동등할 여지가 있다. 동등함을 확인하는 과정에는 다음 규칙과 타입 변환이 사용된다. 두 값 중에 하나가 null이고 다른 하나가 undefined라면 두 값은 동등하다. 한 값이 숫자이고 다른 하나는문자열이면, 문자열을 숫자로 변환한 ...

javascript 연산자 우선순위

 P  A  연산자  피연산자 타입  수행되는 연산  15  L  .  객체, 식별자  프로퍼티 접근    L  []  배열, 숫자  배열 인덱스    L  ()  함수, 전달인자  함수 호출    R  NEW  생성자 호출  새 객체 생성  14  R  ++  좌변값  전치 후치 증가    R  --  좌변값  전치 후치 감소    R  -  숫자  단항 마이너스    R  +  숫자  단항 플러스    R  ~  정수  비트 단위 NOT    R  !  불리언  논리 NOT    R  delete  좌변값  프로퍼티 정의를 무효화    R  typeof  타입 무방  데이터 타입을 반환    R  void  타입 무방  undefined 값을 반환  13  L  *,/,%  숫자  곱하기, 나누기, 나머지  12  L  +,-  숫자  더하기 빼기    L  +  문자열  문자열 이어 붙이기  11  L  <<  숫자  왼쪽으로 이동    L  >>  숫자  부호비트를 ...

javascript 데이터 타입과 값

 시퀀스 표현하는 문자  \0  널문자(\u0000)  \b  백스페이스(\u0008)  \t  수평 탭(\u0009)  \n  줄바꿈 문자(\u000a)  \v  수직 탭(\u000b)  \f  폼 피드(\u000c)  \r  캐리지 리턴(\u000d)  \"  큰따옴표(\u0022)  \'  작은 따옴표(\u0027)  \\  역슬래시(\u005c)  \x??  두개의 16진수 숫자 ??에 의해 지정되는 Latin-1문자.  \u???  네 개의 16진수 숫자 ????에 의해 지정되는 Unicode 문자.  \???  1과 377 사이의 8진수 숫자 ???에 의해 지정되는 Latin-1 문자.  값  문자열  숫자  불리언  객체  undefined  "undefined"  NaA  false  Error  null  "null"  0  false  Error  빈 문자열이 아닌 문자열  그 자체  문자열이 나타내는 숫자 값 혹은 NaN  true  String 객체  빈 문자열  그 자체  0  false  String 객체  0  "0"  그 자체  false  Number 객체  NaN  "NaN"  그 자체  false  Number 객체  무한대  "Infinity"  그 자체  true  Number 객체  음의...

Ajax의 주요 특징

1. 소규모 서버 측 이벤트: 이제 웹 애플리게이션은 서버에 소규모 데이터만 요청하고 필요한 정보를 받아오고 DOM 트리를 조작하여 페이지 모양을 변경할 수 있다. 전체 페이지를 새로 받아올 필요는 없다. 2. 비동기 방식: 서버로 요청 보내는 일이 브라우저를 멈추게 만들지 않는다. 요청을 처리하는 동안 사용자는 애플리케이션의 다른 부분을 계속 사용할 수 있다. 보통 UI를 업데이트함으로써 사용자에게 서버로 요청을 보내는 것을 알린다. 3. 언제든지: 최신 부라우저는 운영체제가 제공하는 사용자 이벤트와 동등한 수준의 이벤트를 잡아낼 수 있다. 마우스 클릭, 마우스 오버, 키 눌림 등. 어떠한 사용자 이벤트도 비동기 요청을 만들어 낼 수 있다.   -실전 AJAX-

Ajax에 대하여 - 자바스크립트 완벽가이드

Ajax 애플리케이션을 만들어내는 데에 있어 가장 큰 어려움은 기술적인 문제가 아니다. Ajax의 핵심 기술은 이미 충분히 성숙해 있고 안정적이며 널리 공감대가 형성되어 있다. 그 어려움이란 바로 이러한 애플리케이션을 설계할 사람들에게 있다. 그들은 웹의 한계나 제한에 대해서 지금까지 알고 있다고 생각해왔던 것들을 잊어야 한다. 그 대신, 이제 더 넓고 풍부한 가능성에 대해 상상의 나래를 펴쳐야 할 때다. 점점 더 재미 있어지려 한다. -자바스크립트 완벽가이드-