JS에서 메소드 과부하를 구현하는 방법은 무엇입니까? 여기에는 세 가지 문제가 포함됩니다
1. 같은 이름의 함수 호출 문제
2. 함수의 특수 매개 변수
3. 인수를 사용하여 메소드 과부하를 구현하는 방법
1. 같은 이름의 함수 호출 문제
JS에 동일한 이름을 가진 여러 가지 기능이 있으면 마지막으로 호출 할 때마다 마지막 기능이 사용된다는 것을 모두 알고 있습니다. JS는 실제로 과부하되지 않습니다. 즉, 동일한 이름의 여러 함수가 정의되면 단일 매개 변수가 다릅니다. 호출 할 때 JS는 매개 변수 수에 신경 쓰지 않고 전후의 순서 만
예를 들어:
함수 test1 (arg1) {alert ( "파라미터 1 :"+arg1); } 함수 test1 (arg1, arg2, arg3) {alert ( "매개 변수 1 :"+arg1+"매개 변수 2 :"+arg2+"매개 변수 3 :"+arg3); } // 테스트 코드 함수 test () {test1 ( "1")}테스트 1 ( "1")을 호출하고 매개 변수를 전달하지만 실제 호출은 test1 (arg1, arg2, arg3)이며 매개 변수를 전달하기 때문에 하나의 매개 변수 만있는 메소드를 호출하지 않습니다.
2. 함수의 특수 매개 변수
다음 코드를 사용하는 경우
함수 test1 (arg1, arg2, arg3) {alert ( "파라미터 1 :"+arg1+"매개 변수 2 :"+arg2+"매개 변수 3 :"+arg3); } 함수 test1 (arg1) {alert ( "매개 변수 1 :"+arg1); } // 테스트 코드 함수 test () {test1 ( "1", "2")}우리는 호출이 항상 test1 (arg1)이라는 것을 알고 있습니다. 이것은 하나의 매개 변수 만있는 함수를 의미하지만 다른 매개 변수를 통과하는 방법은 무엇입니까?
이를 위해서는 함수에 전달 된 모든 매개 변수를 포함하는 함수 인수에서 특수 매개 변수를 사용해야합니다.
함수 test1 () {var text = ""; for (var i = 0; i <arguments.length; i ++) {text+= "매개 변수"+i+":"+arguments [i]; } 경고 (텍스트); } // 테스트 코드 함수 test () {test1 ( "1"); test1 ( "1", "2"); test1 ( "1", "2", "3"); }테스트 후, 인수는 함수에 전달되는 모든 매개 변수가 포함되어 있음을 발견했습니다. 인수는 전달 된 실제 매개 변수의 수에 따라 다양하며 인수는 실제로 함수 매개 변수에 전달 된 수를 나타냅니다.
3. JS에서 기능의 과부하를 구현하는 방법은 무엇입니까?
위의 테스트 후, 기능의 과부하가 JS에서 직접 구현 될 수는 없지만 유사한 과부하 효과를 달성 할 수있는 방법이 있습니까?
예, 주로 인수를 사용합니다
예를 들어:
함수 test1 () {var text = ""; if (arguments.length == 1) {// 하나의 매개 변수의 메소드를 호출} else if (arguments.length == 2) {// 두 매개 변수의 메소드를 호출} else {// 기타 방법}}