U E D R , A S I H C RSS

JavaScript/2011년스터디/JSON-js분석 (rev. 1.8)

Java Script/2011년스터디/JSON-js분석


지혜

  • 알아낸 것
    • stringify의 return문에서 쓰는 fake root의 역할
    • str함수 내에서 object, object array등을 처리할때 재귀적으로 들여쓰기를 처리해준다. 디테일이 살아있어

// 배열 처리
// 배열은 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;
}

"use strict"
  • 의문점
    • cx가 무슨뜻이지? cx와 escapable의 정규표현식들의 값이 뭐지?
    • toJSON에서 key를 파라메터로 넘기는 이유(코드내에서 사용하지는 않는다)

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의 역할도 다음시간에

정근

수경

  • 의문점
    • line 177 : Date.prototype.toJSON = function (key) 에서 key는 왜 넘겨주는가?
    • line 195 : cx의 의미는 무엇인가?
    • line 237 : value는 왜 holderkey로 가져오는가?
  • 더 알고 싶은 것
    • Javascript의 strict mode
Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:23:30
Processing time 0.0415 sec