< 자바스크립트(JavaScript) ; 객체, 모듈, JS의 정규표현식 >

 

1. 객체

 

1) 객체 정의 및 사용

 - 배열과 유사하지만 배열의 index를 특정 문자로 사용하는 방식, key/value 쌍으로 이루어지며, 다른 프로그래밍 언어의 연관배열(associative array), (map), 딕셔너리(dictionary) 등의 data typeJS의 객체에 해당됨.

 - 배열은 중괄호, 객체는 대괄호와 콜론(:)

 - 객체 정의 양식 : var 객체명 = {'aaa' : 10, 'bbb' : 20, 'ccc' :30};

 - 빈 객체 정의 : var 객체명 = {};

 - 빈 객체 정의 : var 객체명 = new Object();

 - 객체의 값사용(key로 값을 불러냄) : 객체명['aaa'] or or 객체명['aa'+'a'] or 객체명.aaa (key의 문자열을 합칠 필요가 있을 때는 대괄호 방식을 사용해야 할 수도 있음.)

 - 객체 요소 추가 및 값 변경 : 객체명['aaa'] = 15

 

2) for 문에서의 객체 사용( for/in) ; for/in 문은 배열에서도 사용 가능

 - 배열은 저장된 데이터가 순서를 가지고 있지만, 객체는 저장된 데이터가 순서를 가지고 있지 않음. 배열은 순서(index)를 사용하여 value를 불러오고, 객체는 순서 대신 key 값으로 value 를 불러옴.

var 객체명 = {'aaa': 10, 'bbb': 20, 'ccc': 30};

for(key in 객체명) {

    JS명령문;

}

 

3) 객체 지향 프로그래밍 : 객체의 값으로 객체, 함수 등 다양한 data 가 올 수 있음

 - 객체명.sub-객체명[key]

 - 객체명.함수의Key()

 - 예제

var grades = {

    'list': {'aaa': 10, bbb: 20, ccc: 30},

    'show' : function(){

        for(var name in this.list){

            document.write(name+':'+this.list[name]+"<br />");

        }

    }

};

grades.show();

 - this : JS 구문의 function내에서 사용된다면… : this는 자신이 사용되고 있는 함수가 속하는 객체 자신을 가르킴. à 객체에 sub객체와 함수를 정의하고, 함수 내에서 this.sub객체명 을 for 문으로 반복시키면, sub 객체의 key,값을 사용할 수 있음.

 

2. 모듈과 라이브러리

 

1) 모듈 개념

 - JS에서는 모듈의 개념이 명확히 정의되어 있지는 않지만 JS가 구동되는 host 환경에 따라 다양한 모듈화 방법이 존재함.

 - JS가 구동되는 host 환경 : 웹브라우져, 서버(node,js), 구글(Google Apps Script)

 

2) 모듈 사용 : <script src="~~~"></script> 로 모듈을 로드해서 사용

 - 복잡한 함수 A,B를 별도 JS 파일로 분리하고, html code에서 headJS파일을 src에 경로로 지정해서 body에서 호출해서 사용할 수 있음. 다양한 JS 파일을 다양한 html 파일에서 src 를 사용해서 import 해서 사용 가능함. (imort 해 온 js 파일 목록은 크롬 개발자도구 network 탭에서 확인 가능함.)

 - JS파일 : ~~~함수A, 함수B, ~~~

<head>

  <script src="JS파일명.js"></script>

</head>

<body>

  <script>

    함수A()

    함수B()

  </script>

</body>

 

3) Node.js에서의 모듈 개념(exports 로 모듈을 내보내고, require로 모듈을 불러옴)

 - 모듈파일 :

exports.A = function(){};

exports.B = function(){};

 - var 모듈파일을 담을 변수명(ABC) = require('./모듈파일명.js');

ABC.A()

ABC.B()

 

4) 라이브러리

 - 모듈 : 프로그램을 구성하는 부품 로직

 - 라이브러리 : 로직을 잘 정리한 코드들의 집합(: jQuery)

 - 라이브러리(jQuery) 사용 :

$('#버튼ID').click(function(){

  $('#....').text('~~~');

)}

 

5) 자바스크립트 API 문서

 - LiveScript à JavaScript = ECMAScript

 - ECMAScript(표준문서), 자바스크립트 사전(생활코딩), MDN, MSDN

 - JS 호스트 환경 API : 웹브라우져 API, Node.js API, Google Apps API

 

3. JS의 정규표현식

1) 컴파일 : 패턴 찾기(만들기), 정규표현식을 컴파일해서 객체를 생성함.

2) 실행 : 컴파일된 패턴에 대해서 어떠한 작업을 하는 것

3) JS 정규표현식 패턴 만들기

 - 정규표현식 리터럴 ( /~~~/ 사용)

var pattern = /a/

 - 정규표현식 객체생성자

var pattern = new RegExp('a');

 

4) Reg.EXp를 이용한 method 실행 예(exex method 사용)

 - target에서 정규표현식 패턴(pattern)을 찾기 : RegExp(pattern).exec('target 정보')

var pattern = /a/;

pattern.exec('abcde'); --> ["a"]

var pattern = /a./; ( . 은 정규표현식에서 모든 문자를 의미)

pattern.exec('abcde'); --> ["ab"]

 - exec()는 추출용, test()는 존재유무 테스트용 ;  test() --> true, false return

 

5) 문자열(string)에서 method 사용

var pattern = /a/;

var str = 'abcdef';

str.match(pattern); --> ["a"]

str.replace(pattern, 'A'); --> "Abcdef"

 

6) 정규표현식의 옵션 : i (대소문자를 구분하지 않음), g (global, 검색된 모든 결과를 리턴)

 

var xi = /a/; (i 옵션을 사용하지 않음)

"Abcde".match(xi); --> null

var oi = /a/; (i 옵션을 사용함)

"Abcde".match(oi); --> ["A"]

 

var xg = /a/;

"abcdea".match(xg); --> ["a"]

var og = /a/;

"abcdea".match(og); --> ["a","a"]

 

i,g 옵션 동시 사용

var ig = /a/ig;

"AabcdAa",match(ig); --> ["A", "a","A", "a"]

 

7) 캡쳐 : JS 정규표현식에서 그룹을 지정하고, 그룹을 가져와서 사용하는 작업

 - 괄호는 정규 표현식에 group 을 의미 : (\w+)\s(\w+) --> 문자열(단어) 빈칸 문자열(단어)

 - $2 (pattern 중 첫번째 괄호 group을 의미)

var pattern = (\w+)\s(\w+)

var str = "aaa bbb"

var result = str.replace(pattern, '$2, $1')

console.log(result); --> everybody, coding

 

 8) 치환 : 본문의 모든 url 주소를 찾아서 html a tag로 지정해서 각각의 url로 링크시키는 작업

var urlPattern = /\b(?:https?):\/\/[a-z0-9-+&@#\/%?=~_|!:,.;]*/gim;

var content = '~~~  http://opentutorials.org/course/1 ~~~ http://naver.com ~~~ ';

var result = content.replace(urlPattern, function(url){

    return '<a href="'+url+'">'+url+'</a>';

});

console.log(result);

 


+ Recent posts