예, 물론 가능합니다. apply
은 함수의 결과를 반환하므로 여기서는 적용 할 수 없지만 bind
이 적합합니다.
MDN docs for Bind을 읽을 수 있습니다.
바인드가 순서대로 작동하므로 매개 변수의 순서를 변경하면 멋지고 우아합니다. sortby
의 서명을 function sortby(prop, a, b) {
으로 변경해 보겠습니다. 이제 우리는 bind에 첫번째 매개 변수를 고치라고 쉽게 말할 수 있습니다 :
someArray.sort(sortby.bind(undefined, 'propertyname'));
undefined
에 주목하십시오. bind
에 대한 첫 번째 매개 변수는 (문서 당) 새 this
참조입니다. 우리가 그것을 사용하지 않기 때문에, 우리는 문맥을 바꾸고 싶지 않다고 말하는데 undefined
을 전달할 것입니다. 다음 매개 변수는 bind에 첫 번째 인수로 'propertyname'값을 sortby
에 전달하는 함수를 작성하도록 지시합니다. 이렇게하면 부분 기능 응용 프로그램; 두 개의 매개 변수를 취하는 함수를 반환합니다. sortby
에 이미 주어진 첫 번째 값을 호출 한 다음 두 개의 매개 변수를 호출합니다. 이 함수는 sort
으로 전달되어 필요에 따라 호출됩니다.
수동 바인딩 호출을 해석, 그것은 당신에게 같은 것을 제공 :이 당신을 도울 수
someArray.sort(function (a, b) {
sortby.apply(this, 'propertyname', a, b);
});
을 http://stackoverflow.com/a/1134983/1075211 – keinabel
오히려'>'비교 당신보다 'localecompare'를 사용하고 'prop.toLowerCase()를 반환 할 수도 있습니다. localeCompare (b [prop] .LowerCase());' –