코드는 다음과 같습니다.
function toArray() {
return this.map();
//======> this.map()
//Return 시 map 메소드가 Collect 메소드
return {
//...
collect:collect,
map:collect,
/에 매핑되는 것을 확인했습니다. / ...
}
//======>collect()
//이 경우 이 메서드는 실제로 배열을 반환하는 것과 동일합니다. 전달 모든 수신 매개변수가 정의되지 않았습니다. 여기에 this.each 메소드가 있습니다.
function Collect(iterator, context) {
iterator = iterator || Prototype.K;
var results =
this를 살펴보세요. Each( function(value, index) {
results.push(iterator.call(context, value, index));
}) 결과 반환
}
// ======> this.each()
//드디어 this._each를 보았습니다. 이제 ObjectRange에서 _each 메서드가 재정의된 이유를 이해합니다.
function Each(iterator, context) {
var index = 0;
try {
this._each(function(value) {
iterator.call(context, value, index );
} catch (e) {
if (e != $break) throw e;
}
>
//======> this._each()
//this._each() 자세히 설명
//핵심은 succ() 메소드입니다. 메소드는 _each에서 다음 값을 생성하는 데 사용됩니다.
//이 succ()는 어디에 있나요? 이 메소드는 Number.prototype 및 String.prototype에 정의되어 있습니다.
function _each(iterator) {
var value = this.start;
while (this.include(value)) {
iterator( value );
value = value.succ();
}
}
//다음 두 가지 방법은 다루지 않겠습니다.
//======> String.prototype.succ()
function succ() {
return this.slice(0, this.length - 1)
String.fromCharCode(this.charCodeAt(this.length - 1) 1)
}
//======> Number.prototype.succ()
function succ() {
return this 1;
}
//요약하자면 Date 유형과 같은 다른 유형의 ObjectRange 객체를 정의하려는 경우 다음을 수행할 수 있습니다. 연속 객체를 생성하려면 succ() 메소드를 직접 구현해야 합니다
위의 과정은 명확하지만 일부 기능은 자세히 설명되지 않습니다. 이러한 객체를 언급할 때 내부 기능에 대해 설명합니다. 자세히. include의 몇 가지 예를 살펴보겠습니다.
코드 복사
// -> ; false $R(1, 10).include(10)
// -> true
$R(1, 10, true).include(10)
// -> ; 거짓