- 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ì�€ ë�ì§€??










