JavaScript에서 시뮬레이션된 함수 오버로딩
5663 단어 javascript
함수 오버로딩이란
function overloading or method overloading is the ability to create multiple functions of the same name with different implementations. -- Function overloading
기타 언어
다른 언어에서는 같은 이름의 다른 함수를 추가하여 오버로드된 함수를 만들 수 있습니다.
// C#
void doThing(int x)
{
Console.WriteLine("int x");
}
void doThing(string y)
{
Console.WriteLine("string y");
}
두 번째 함수가 첫 번째 함수를 덮어쓰므로 JavaScript에서는 이 작업을 수행할 수 없습니다.
함수 오버로딩 동작 시뮬레이션
내가 하고 싶은 것은 명명된 인수 기능을 갖는 것이지만 전통적인 인수도 지원하는 것입니다. 따라서 다음 두 가지 방법 모두에서 내 기능을 호출하고 작동하도록 하고 싶습니다.
// Traditional
doThing(3, 4);
// Named Arguments
doThing({ x: 3, y: 4 });
이 동작을 시뮬레이션하는 한 가지 방법은 함수 인수 유형을 감지하는 것입니다.
function doThing(x, y) {
// detect named argument object
if (typeof x === 'object' && x != null) {
return doThing(x.x, x.y)
}
console.log({ x, y })
}
// ✅ Now both styles work!
doThing(3, 4);
doThing({ x: 3, y: 4 });
이 예에서 첫 번째 인수
x
는 object
유형인지 확인하기 위해 테스트됩니다. 일치하면 x
에서 가져온 매개변수로 함수가 호출됩니다.권장 행동
JavaScript는 기본적으로 함수 오버로딩을 지원하지 않기 때문에 일반적으로 두 개의 개별 함수를 만들고 함수 오버로드를 시도하지 않는 것이 좋습니다.
// Sometimes it is better to create two separate functions.
function readFile(fileName) { /* code */ }
function readFileContents(contents) { /* code */ }
그러나 명명된 인수를 지원하고 기존 인수와의 하위 호환성을 유지하기를 원하기 때문입니다. 따라서 이 경우에는 Simulated Function Overloading이 허용 가능한 솔루션보다 높다는 것을 알았습니다.
헐 박사
JavaScript는 기본적으로 함수 오버로딩을 지원하지 않지만 매개변수 유형을 확인하여 이를 시뮬레이션할 수 있습니다. 서로 다른 동작에 대해 두 개의 개별 함수를 만드는 것을 선호합니다. 그러나 어떤 경우에는 Simulated Function Overloading도 좋은 솔루션입니다.
건배 🍻
israel palacio에 Unsplash의 사진
Reference
이 문제에 관하여(JavaScript에서 시뮬레이션된 함수 오버로딩), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/joelnet/simulated-function-overloading-in-javascript-1l0o텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)