- JavaScript/2011년스터디/3월이전
- JavaScript/2011년스터디/7월이전
- JavaScript/2011년스터디/JSON-js분석
- JavaScript/2011년스터디/URLHunter
- JavaScript/2011년스터디/박정근
- JavaScript/2011년스터디/서지혜
- JavaScript/2011년스터디/윤종하
- JSON-js 코드 분석하기
 
지혜 ¶
- 알아낸 것
 - stringify의 return문에서 쓰는 fake root의 역할
 
- str함수 내에서 object, object array등을 처리할때 재귀적으로 들여쓰기를 처리해준다. 디테일이 살아있어
 
 
- stringify의 return문에서 쓰는 fake root의 역할
// 배열 처리
// 배열은 partial 배열에 처리하는듯
if (Object.prototype.toString.apply(value) === '[object Array]') {
	length = value.length;
	for (i = 0; i < length; i += 1) {
		partial[i] = str(i, value) || 'null';		// 시밤 재귀냐
	}
	v = partial.length === 0 ? '[]' : gap ?
		'[\n' + gap + partial.join(',\n' + gap) + '\n' + mind + ']' :
		'[' + partial.join(',') + ']';
	gap = mind;
	return v;
}
- 자바스크립트의 strict모드 (레식이 홈피참고)
 
"use strict"
- 의문점
 - cx가 무슨뜻이지? cx와 escapable의 정규표현식들의 값이 뭐지?
 
- toJSON에서 key를 파라메터로 넘기는 이유(코드내에서 사용하지는 않는다)
 
 
- cx가 무슨뜻이지? cx와 escapable의 정규표현식들의 값이 뭐지?
if (typeof Date.prototype.toJSON !== 'function') {
        Date.prototype.toJSON = function (key) {
            return isFinite(this.valueOf()) ?
                this.getUTCFullYear()     + '-' +
                f(this.getUTCMonth() + 1) + '-' +
                f(this.getUTCDate())      + 'T' +
                f(this.getUTCHours())     + ':' +
                f(this.getUTCMinutes())   + ':' +
                f(this.getUTCSeconds())   + 'Z' : null;
        };
	// String 객체
        String.prototype.toJSON      =
            Number.prototype.toJSON  =
            Boolean.prototype.toJSON = function (key) {   // 왜 key를 넣는거지!! 
                return this.valueOf();
            };
    }
- 중첩 ?:문의 우선순위?
 
// 뭐가 먼저일까요?
// 1.  partial.length === 0 ? '{}' : gap, gap ? '{\n' + gap + partial.join(',\n' + gap) + '\n' + mind + '}' : '{' + partial.join(',') + '}'
// 2.  gap ? '{\n' + gap + partial.join(',\n' + gap) + '\n' + mind + '}' : '{' + partial.join(',') + '}', partial.length === 0 ? '{}' : gap
v = partial.length === 0 ? '{}' : gap ?
                '{\n' + gap + partial.join(',\n' + gap) + '\n' + mind + '}' :
                '{' + partial.join(',') + '}';
- parse함수를 못 봤다. 다음 시간에..
 
- riviver의 역할도 다음시간에
 
정근 ¶
- 알아낸것
 - perl에서는 "use strict"라고 썻을 경우 선언되지 않은 변수등은 오류로 뜸(프로그래머의 실수 방지)
 
 
- perl에서는 "use strict"라고 썻을 경우 선언되지 않은 변수등은 오류로 뜸(프로그래머의 실수 방지)
- '\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4);
 
// .slice(-4)로 뒤에서 4글자를 추출
- 직렬화(Serialize, Serialization)	객체를 쉽게 옮길수 있도록 형태를 변환하는 과정
 
- 역직렬화(Deserialize, Deserialization)	직렬화와 반대과정 즉 스트링에서 객체를 재구성
 
 
- 의문점
 - '\u'는 유니코드? 그럼 '\x'는 무엇을 나타내는 거지?
 
- String.prototype.toJSON      =
 Number.prototype.toJSON =
 Boolean.prototype.toJSON = function (key) {
 return this.valueOf();
 
 }; 이부분;;;
 
- '\u'는 유니코드? 그럼 '\x'는 무엇을 나타내는 거지?
- str function에서 'string', 'number', 'boolean', 'null' 은 모두 string로 변환한다. 그런데 'object'의 NULL은 뭐지??
 













