>  기사  >  웹 프론트엔드  >  javascript_javascript 팁의 인수 매개변수를 통해 메소드 오버로드를 위장하는 방법

javascript_javascript 팁의 인수 매개변수를 통해 메소드 오버로드를 위장하는 방법

WBOY
WBOY원래의
2016-05-16 16:34:411426검색

많은 고급 객체 지향 언어에는 메소드 오버로딩이 있습니다. 그리고 자바스크립트에는 메소드 오버로딩이라는 개념이 없습니다. 하지만 인수 매개변수를 사용하여 이를 함수의 오버로드로 위장할 수 있습니다

시뮬레이션하기 전에 코드를 살펴보겠습니다.

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

//표면에 형식 매개변수를 선언하지 않는 함수
함수 fun() {
Alert("샘플 코드");
}
fun("Xiao Ming", 100, true);//실제 매개변수 3개를 작성했습니다

결과를 보면, 함수를 선언할 때 형식적인 매개변수를 정의하지 않더라도 메소드를 호출할 때 실제 매개변수를 작성할 수 있다는 것을 알 수 있습니다. (실제로는 프로그래머가 함수를 호출할 때 볼 수 있도록 형식적인 매개변수를 작성합니다.)

코드에서 실제 매개변수를 얻을 수 있나요? 대답은 '예'입니다. 코드를 참조하세요.

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

//표면에 형식 매개변수를 선언하지 않는 함수
함수 fun() {
Alert(arguments[0]);//첫 번째 실제 매개변수의 값을 가져옵니다.
Alert(arguments[1]);//두 번째 실제 매개변수의 값을 가져옵니다.
Alert(arguments[2]);//세 번째 실제 매개변수의 값을 가져옵니다.
Alert(arguments.length);//실제 매개변수 수를 가져옵니다.
Alert("샘플 코드");
}
fun("Xiao Ming", 100, true);//실제 매개변수 3개를 작성했습니다

코드를 통해 우리는 인수(내부 속성) 자체가 배열이고 그 기능이 메소드의 실제 매개변수를 저장하는 것임을 알 수 있습니다.

위의 지식 포인트를 통해 시뮬레이션 방법 오버로드에 대한 아이디어를 얻을 수 있습니다. 다양한 로직 코드를 실행하기 위해 실제 매개변수의 개수를 기준으로 판단할 수 있습니다. 간단한 코드는 다음과 같습니다.

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

함수 fun() {
if (arguments.length == 0) {
Alert("실제 매개변수 없이 코드 실행");
}
else if(arguments.length==1)
{
Alert("실제 매개변수에 전달된 코드를 실행합니다.");
}
else if(arguments.length==2)
{
Alert("두 개의 실제 매개변수에 전달된 코드를 실행합니다.");
}
}
재미있다();
fun("샤오밍");
fun("샤오밍", "샤오화");
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.