js 반 코 리 화 개인 이해 및 조작

2945 단어
js 를 배 운 사람들 은 모두 원형 이 js 의 영혼 이라는 것 을 알 고 있다. 나 는 원형 을 처음 접 했 을 때 매우 복잡 하 다 고 느 꼈 다. 그리고 일련의 해석 을 본 후에 스스로 생각 을 정리 했다. 드디어 뚜렷 해 졌 다. 오늘 나 는 코 리 화 와 반 코 리 화 를 했 고 반 코 리 화 결합 원형 체인 에 대해 어느 정도 인식 을 가지 게 되 었 다. 하 나 는 내 가 정리 한 것 이다.
 반 코 리 화, 개인 해석 은 대상 이나 함수 의 원형 을 추가 하 는 방법 으로 원래 사용 범위 가 제 한 된 코드 를 적용 할 수 있 는 범위 가 더욱 넓 어 지 는 것 이다. 예 를 들 어 배열 의 reduce, map, foreach 등 함수 들 은 모두 배열 대상 을 통 해 만 사용 할 수 있다. 예 를 들 어 문자열 이 그 방법 을 사용 하려 면 반드시 call, bid, apply 방식 으로 함수 의 호출 주 체 를 수정 해 야 한다.그러나 우 리 는 스스로 포장 한 후에 함수 의 원형 대상 에 추가 할 수 있 습 니 다. 그러면 모든 유형 이 배열 을 사용 하 는 방법 은 직접 호출 할 수 있 습 니 다. 구체 적 인 실현 방법 은 다음 과 같 습 니 다.
Function.prototype.uncurrying = function(){
        const self = this
          return function () {               
          let obj = [].shift.call(arguments)
          let rest = arguments
          return self.apply(obj, rest)
      }
  }

위의 코드 는 매우 간단 합 니 다. 먼저 Function 에 원형 방법 을 추가 하고 함 수 를 되 돌려 줍 니 다. this 는 우리 가 뒤에 쓸 인 스 턴 스 대상 입 니 다. obj 는 주 체 를 호출 하 는 것 을 말 합 니 다. 여기 서 우리 가 받 아들 인 주 체 를 모두 배열 형식 으로 수정 하 였 습 니 다 (어떤 유형 이 배열 형식 이 되 었 든 배열 을 사용 할 수 있 는 방법). rest 는 들 어 오 는 나머지 매개 변 수 를 말 합 니 다.그 다음 에 obj 를 주체 로 하여 인 스 턴 스 대상 을 호출 하여 나머지 매개 변 수 를 되 돌려 주 고 다른 주체 에 작용 할 수 있 는 함 수 를 얻 었 습 니 다.
다음은 foreach 예 를 들 어 실례 화 함수 입 니 다.
1  let forEach = [].forEach.uncurrying()
2   
3   forEach("asd", function (item) {
4       console.log(item)
5   })

 
첫 번 째 줄 foreach 원형 에 uncurrying 방법 이 있 고 함 수 를 실 행 했 습 니 다.
마지막 결과   a s d
foreach 뿐만 아니 라 reduce, fifter 와 같은 것 을 사용 하면:
1  let reduce = [].reduce.uncurrying()
2  let filter = [].filter.uncurrying()
3 let ans = reduce("123", (a, b) => {
4      return a*1+b*1
5    }, 0) // 6

결론: 반 코 리 화 를 잘 사용 하면 한계 가 많은 함 수 를 스스로 포장 할 수 있 고 그 사상 이 우수 하 다.

좋은 웹페이지 즐겨찾기