JSON(JavaScript Object Notation)의 준말로, 데이터 전송 형식의 일종이다.
JSON 의 예
{"name": "value", "some": [1, 2, 3]};
JSON에서는 프로퍼티명를 따옴표로 감싸야 한다는 점이 객체 리터럴과의 유일한 문법적 차이다.
객체 리터럴은 프로퍼티명이 식별자로서 유효하지 않은 경우에만 따옴표가 필요하다.
즉 {"first name": "Dave"}에서처럼 프로퍼티명에 공백문자가 포함되었다면 따옴표로 가싸주어야 한다.
JSON 문자열에는 함수나 정규식 리터럴을 사용할 수 없다.
JSON 다루기
JSON 문자열을 평가하면 보안 문제가 있을 수 있기 때문에 JSON.parse()를 이용하는 것을 권장한다.// 입력되는 JSON 문자열
var jstr = '{"mykey": "my value"}';
// 안티패턴
var data = eval('(' + jstr + ')');
// 권장안
var data = JSON.parse(jstr);
console.log(data.mykey); // "my value"
JSON.parse() 매서드의 반대는 JSON.stringify() 다.
이 메서드는객체 또는 배열(또는 원시 데이터 타입)을 인자로 받아 JSON 문자로 직렬화한다.
var dog = {
name: "Fido",
dob: new Date(),
legs: [1, 2, 3, 4]
};
var jsonstr = JSON.stringify(dog);
// jsonstr 값은 다음과 같다.
// {"name": "Fido", "dob":"2010-04-11T22:36:22.436Z","legs":[1,2,3,4]}
정규표현식 리터럴
자바스크립트에서 정규식을 생성하는 방법은 두가지다.- new RegExp() 생성자를 사용한다.
- 정규식 리터럴을 사용한다.
역슬래시 하나에 매치되는 예제
즉 정규표현식보다는 정규표현식 리터럴을 쓰는것이 더 간단하고 쉽다.
// 정규식 리터럴
var re = //gm;
// 생성자
var re = new RegExp("", "gm");
정규 표현식 리터럴 문법
정규식 리터럴 표기법은 매칭에 사용되는 정규식 패턴을 슬래시로 감싼다.두번째 슬래시 뒤에는 따옴표 없이 문자 형태의 변경자를 둘수 있다.
정규식 리터럴과 생성자의 또다른 차이점으로는 정규식 리터럴의 경우 파싱될때 단 한번만 객체를 생성한다는 점을 들수 있다.
루프 안에서 동일한 정규식을 생성하면 이미 생성된 객체가 반환되며, lastIndex 등 모든 프로퍼티는 최초에 설정된 상태를 이어받는다.
다음 예제는 동일한 객체가 두번 반환되는 과정을 보여준다.
function geRE() {
var re = /[a-z]/;
re.foo = "bar";
return re;
}
var reg = getRE(),
re2 = getRE();
console.log(reg === re2); // true
reg.foo = "baz";
console.log(re2.foo); // "baz"
마지막으로 덧붙이자면, new를 빼먹고 RegExp()를 호출해도 (즉 생성자가 아니라 함수처럼 호출해도) new와 함께 호출한 것처럼 동작한다.
[출처: 대문블로그] : http://demun.tistory.com/
'스터디 > Javascript · jQuery' 카테고리의 다른 글
이벤트 버블링과 캡쳐링 (0) | 2014.10.07 |
---|---|
콜백패턴 (0) | 2014.10.07 |
on, off 그리고 one (0) | 2014.10.07 |
트리거 trigger (0) | 2014.10.07 |
jquery has / :has (0) | 2014.10.07 |