JS 함수 정의는 공식 매개 변수의 이름을 지정할 수 있습니다. 다소, 우리는 JS가 적어도 다른 매개 변수로 과부하를 지원할 수 있다고 생각할 것입니다. 불행히도 이것은 단지 환상입니다. JS의 모든 매개 변수는 인수로 전달됩니다. 이 매개 변수는 배열과 유사합니다. 함수가 호출되면 모든 실제 매개 변수는이 데이터 구조에 저장됩니다. 기능을 정의 할 때 지정된 공식 매개 변수는 실제로이 데이터 구조에서 데이터에 대한 빠른 액세스 방법을 정의합니다. 다시 말해, JS의 모든 함수는 무한 매개 변수를 지원하고 데이터 유형은 약한 유형이므로 이름을 제외한 JS 함수간에 방법 차이가 없습니까?
항상 방법이 있습니다. JavaScript에서 특수 객체 인수를 사용하여 기능 과부하를 시뮬레이션 할 수 있습니다. 과부하를 구별하기 위해 들어오는 매개 변수의 수 또는 유형을 결정하는 데 사용하십시오.
1. 매개 변수 수에 따라 다시로드
수신 매개 변수의 수를 결정하려면 js는 인수에 의해 판단 될 수 있습니다.
코드 사본은 다음과 같습니다.
<script type = "text/javaScript">
함수 add () {
if (arguments.length == 1) {
경고 (인수 [0] + 10);
}
else if (arguments.length == 2) {
경고 (인수 [0] + 인수 [1]);
}
}
// 함수 호출
추가 (10);
추가 (10, 20);
</스크립트>
2. 매개 변수 유형에 따라 다시로드
가변 유형을 판단하는 3 가지 방법이 있습니다.
1. typeof 문을 사용하여 변수 유형을 판단하고 typeof 문은 유형에 해당하는 문자열을 반환합니다.
2. 인스턴스 문을 사용하여 변수 유형을 판단하면 instanceof 문은 true/false를 반환합니다.
3. 생성자 속성을 사용하여 변수를 구성하는 데 사용되는 생성자 참조를 반환하는 가변 유형을 결정합니다.
비교 표 : TypeOf를 사용하면 특정 유형을 정확하게 결정할 수 없으므로 생성자를 사용하여 판단을합니다.
TypeOfStringNumberObjectFunctionBooleanObjectObject
ConstructorstringNumberObjectFunctionBooleanArrayUser Define
코드 사본은 다음과 같습니다.
<script type = "text/javaScript">
함수 add ()
{
if (arguments.length == 0) 반환 0;
var sum = 0;
for (var i = 0; i <arguments.length; i ++) {
if (인수 [i] .constructor == 번호) {
// 또는 변경 사항 : if (인수 [i] instanceof 번호)
// 또는 변경 : if (typeof (arguments [i]) == "숫자")
sum += 인수 [i];
}
}
반환 합계;
}
// 함수 호출
경고 (add (10));
경고 (Add (10,20));
</스크립트>
JavaScript 함수를 과부하시키는 방법을 이해 했습니까? 궁금한 점이 있으면 메시지를 남겨주세요