>웹 프론트엔드 >JS 튜토리얼 >JS 함수_javascript 기술의 오버로딩을 구현하는 방법

JS 함수_javascript 기술의 오버로딩을 구현하는 방법

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB원래의
2016-05-16 19:25:461173검색

JavaScript는 다음과 같이 함수 오버로드를 지원할 수 없습니다.

코드 복사 코드는 다음과 같습니다.


function f(length)
{
Alert("높이:" length)

function f(length, width)
{
Alert("높이: " 길이 ", 너비: " width)



위 코드 실제로는 작동하지 않습니다. 왜냐하면 함수가 정의될 ​​때의 매개변수 개수는 함수가 호출될 때의 매개변수 개수와 아무런 관련이 없기 때문입니다. 함수에서 f.arguments[0] 및 f.arguments[1]을 사용하여 호출 시 전달되는 첫 번째 및 두 번째 매개변수를 얻을 수 있으므로 function(length)를 정의하면 나중에 f(를 사용하여 호출할 필요가 없습니다. 10,10) 문제가 있다. 따라서 위 코드에서는 두 번째 함수를 호출할 수 없습니다. 그렇다면 함수 오버로딩과 같은 기능을 어떻게 구현할 수 있을까요?
함수 정의에서 f.arguments.length를 사용하여 호출 시 전달되는 매개변수 수를 결정하는 것입니다. 그런 다음 상황에 따라 다른 접근 방식을 사용하십시오.
다음과 같습니다.


<script> <div class="codebody" id="code7497">function f() <BR>{ <BR> var len= 인수.길이 <BR> if(1 == len) <BR> { <BR> var 길이 = 인수[ 0] <BR> var 너비 = 인수[1]; <BR> f2(길이, 너비); <BR> } <BR> else <BR> { <BR> var 길이 = 인수[0]; ) ; <BR> } <BR>} <BR><BR>function f1(length) <BR>{ <br> Alert("높이:" length) <br><BR>function f2 ( 길이, 너비) <BR>{ <BR> Alert("높이: " 길이 ", 너비: " <br>} <br><BR><BR><BR> 이 방법으로 f(10) 및 f(10,10)과 같은 하나 또는 두 개의 매개변수를 함수 f()에 전달할 수 있습니다. <BR> 개인적으로 이는 오버로딩을 달성할 수 있지만 그렇지 않습니다. 매우 유용합니다. 특정 상황에 따라 함수에 오버로딩을 구현할 수 있습니다. 오버로드할 두 함수가 매우 다른 경우 두 함수의 구현이 기본적으로 동일하면 판단할 수 있습니다. 위와 같이 3개의 함수를 작성하는 대신, <BR><BR><BR><BR>코드 복사<div class="codetitle"><span><a style="CURSOR: pointer" data="85471" class="copybut" id="copybut85471" onclick="doCopy('code85471')"> 코드는 다음과 같습니다. : <U><script 언어="JavaScript"> function f(length) { <div class="codebody" id="code85471"> var len=args.length <BR> if(1 == Len) <BR> { <BR> var width = 인수[1]; <BR> Alert("높이: " 길이 ", 너비: " <BR> } <BR> else <BR> { <BR>      Alert("키: " 길이); <BR>                                                                                                                                   </script>
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.