>  기사  >  웹 프론트엔드  >  Javascript 객체 지향overloading_js객체 지향

Javascript 객체 지향overloading_js객체 지향

WBOY
WBOY원래의
2016-05-16 18:27:37975검색

이렇게 정의하면

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

function getDate() {.....}
function getDate(date){.....}

그러면 후자의 메소드가 이전 메소드를 덮어쓰지만 오류는 발생하지 않습니다. 보고됩니다.

하지만 실제로 오버로딩을 구현할 수 있습니다. jQuery를 사용해 본 적이 있다면, 예를 들어 $("#btn").val()은 ID가 있는 버튼을 가져오는 것입니다. "btn" 값, 그리고 $("#btn").val("Click Me")는 ID가 "btn"인 버튼에 값을 할당합니다.


그럼 JavaScript는 어떻게 구현되는 걸까요(정확하게 말하면 "시뮬레이션"이라고 불러야 할까요)?
답은 간단합니다. 인수
arguments는 호출자가 전달한 실제 매개변수를 포함하는 JavaScript의 내장 객체이지만 호출될 때 함수 선언에 의해 정의된 매개변수 목록으로 제한되지 않습니다. , 이는 배열 속성과 동일합니다.
일단은 "배열"로 이해하겠습니다. 배열의 길이와 요소의 유형에 따라 다양한 구현을 선택하여 오버로딩을 시뮬레이션합니다.
자세한 내용은 다음 예를 참조하세요.

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

function getDate(){
if(arguments.length==0){
var date=new Date().toLocaleDateString()
return "지금 매개변수를 입력하지 않았습니다. time:" 날짜;
}

if(arguments.length==1){
if(arguments[0].constructor ==Date){
return "입력한 매개변수 날짜 유형입니다. 현재 시간은 다음과 같습니다. " 인수[0].toDateString();
}
if(arguments[0].constructor ==String){
return "입력한 매개변수는 다음과 같습니다. String 유형이고 이제 시간은 다음과 같습니다. " 인수[0];
}
}

}

따라서 다음과 같이 호출할 수 있습니다.

getDate()
getDate( new Date())
getDate("Monday")

이것은 JavaScript 오버로딩을 달성하지만 이 "구현"이 너무 꺼려지는 것을 발견했습니다. 매개변수가 너무 많으면 압도적으로 보일 것이며, if{...}가 어디에나 있어서 코드가 지저분해질 것입니다. 따라서 JavaScript에서는 이러한 오버로딩을 사용하지 않는 것이 좋습니다.
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.