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
결론: 반 코 리 화 를 잘 사용 하면 한계 가 많은 함 수 를 스스로 포장 할 수 있 고 그 사상 이 우수 하 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.