Enumerable은 추상 객체입니다(JavaScript에는 클래스 개념이 없으며 참조되는 클래스는 함수라는 점에 유의해야 합니다. 상속은 일반적으로 해당 메소드 속성을 복사하는 객체(부모)를 나타냅니다(Object.extend를 통해 복사는 다음과 같습니다). 서브클래스(함수)의 프로토타입 속성(객체)에 대한 참조) Enumerable은 직접 사용할 수 없으며 많은 열거 유형(Hash, Array, Range 등)에 의해 상속되며 상속된 유형은 an_ Each를 구현해야 합니다. 메서드는 특정 유형의 열거 메서드를 제공합니다. Enumerable은 다른 하위 클래스에 대해 다음 메서드를 제공합니다. each(iterator): iterator는 특정 유형의 _each 메서드를 호출하여 각 개체를 포함합니다. 예를 들어, Enumerable이 구체적으로 배열을 참조하는 경우(예: var a=[2,3,4]) a.each(iterator) 메서드는 iterator(2,0), iterator( 3,1)를 호출합니다. ), iterator(4,3), 여기서 두 번째 매개변수는 인덱스를 나타냅니다. 이 메서드는 Enumerable의 거의 모든 메서드에서 사용됩니다. eachSlice(number, iterator): [1,2,3,4, 5]와 같이 각 Enumerable 유형 개체를 숫자에 따라 구분합니다.eachSlice(3) =>[[1,2,3],[4,5]], 반복자가 제공되지 않으면 iterator=Prototype.K: function(k){return k}, Prototype의 많은 반복자 기본값은 다음과 같습니다. 또는 Prototype.emptyFunction: function() {} 실제로 실제로 반환되는 것은 [iterator([1,2,3]), iterator([4,5])] all( iterator): Enumerable 유형의 각 값에 대해 반복자를 호출합니다. 그 중 하나가 false를 반환하면 false를 반환하고, 그렇지 않으면 true를 반환합니다. 이는 반복자의 각 값이 "true"인지 판단하는 것과 같습니다. 모든(반복자): 모든 것과 반대로 각 값이 "false"인지(하나의 값이 true인지) 확인 collect(iterator)/map: 각 값에 대해 반복자를 호출하고 결과는 새 배열을 형성하고 반환됩니다. Detect(iterator)/find: 각 값에 대해 iterator를 호출합니다. 값 중 하나가 false가 아닌 경우 iterator를 실행한 후 false가 아닌 값을 반환합니다(이후 반복자 값을 실행하기 위해 반환하지 않음). ), 첫 번째 참 값을 찾는 것과 동일 findAll(iterator)/select:은 감지와 동일하지만 모든 참 값을 찾아 배열을 반환 grep(pattern, iterator ): 패턴과 일치하는 모든 값을 반환합니다. 반복자가 제공되면 해당 반복자의 값을 반환합니다. include(object)/member: 배열에 객체가 포함되어 있는지 여부 inGroupsOf(number, fillWith): 객체를 숫자로 구분하는 EachSlice의 변형 버전입니다. 분리된 배열의 마지막 값의 길이가 숫자보다 작으면 [1,2,3,4, 5].inGroupsOf(3) =>[[1,2,3],[4,5,null]] 주입(메모, 반복자):주입invoke(메서드): 호출 max(반복자): 최대값min(반복자): 최소값파티션(반복자): 분리pluck(속성): Collectionreject( iterator): 자격이 없는 제품, findAll의 반대sortBy(iterator): 반복자에 따라 정렬, 호출된 객체가 Array인 경우 내장 정렬을 호출하면 됩니다. (반복자) 직접 toArray()/entries: 호출 객체의 각 값을 배열로 구성하고 zip():을 반환합니다. 예: [2,3,4].zip ([5,6,7])= >[[2,5],[3,6],[4,7]], 마지막 매개변수 유형이 함수인 경우 [iterator([2,5]]를 반환합니다. ),iterator([3,6]), iterator([4,7])], inspect(): Enumerable 개체의 문자열은 NND를 나타냅니다. Enumerable에는 매우 많은 기능이 있습니다. 저자가 Ruby를 너무 공부해서 모든 방법을 사용했다는 느낌이 듭니다. Prototype으로 넘어가면, Prototype 파일이 점점 커지고, 이로 인해 많은 기능이 이해하기 어려워진다는 것을 알게 되었습니다. 더 많이 설명할수록 소스 코드에 대해 더 많이 읽어야 합니다. 제 글쓰기 실력이 정말 형편없고, 어떤 사람들은 그것을 어떻게 표현해야 할지 모릅니다. 궁금한 점이 있으면 소스 코드를 읽어 이해해야 합니다. 그렇지 않으면 오해에 대해 책임을 지지 않습니다.