JavaScript 에서 매개 변수 개 수 를 사용 하여 리 셋 기능 을 실현 합 니 다.
function overload(){
switch(arguments.length){
case 0:
console.log(" ");
break;
case 1:
console.log(" ");
break;
case 2:
console.log(" ");
break;
case 3:
console.log(" ");
break;
case 4:
console.log(" ");
break;
//
}
}
이런 방식 은 리 로드 를 실현 할 수 있 지만 이런 코드 는 비교적 길 고 실제 개발 에 서 는 상황 이 많 을 때 가 있다.그래서 우 리 는 아래 의 방법 을 사용 할 수 있다.
window.onload=function (){
var cat={
friends:["mimi","pp","gg"]
}
addMethod(cat,"sayName",function(a,b){
console.log(" ");
})
addMethod(cat,"sayName",function(){
console.log(" ");
})
addMethod(cat,"sayName",function(a){
console.log(" ");
})
addMethod(cat,"sayName",function(a,b,c){
console.log(" ");
})
cat.sayName("xiaoming","nihao");
cat.sayName();
cat.sayName("xiaoming");
cat.sayName("xiaoming","xiaohong");
}
// , arguments.length
function addMethod(object,name,fn){
var old=object[name];
object[name]=function(){
if(fn.length==arguments.length)
return fn.apply(this,arguments);
else if(typeof old=='function')
return old.apply(this,arguments);
}
}
이 기술 은 패 킷 을 닫 고 패 킷 에 저 장 된 서로 다른 매개 변 수 를 참조 하 는 상황 을 이용 합 니 다.실제 addMethod 함 수 를 호출 하 는 상황 은 다음 과 같 습 니 다.
왜 이러 지?
패 킷 을 닫 는 이유 로 addMethod 함수 에서 object[name]글자 의 양 함수 외부 변수 old 를 호출 했 습 니 다.이 때문에 쓰레기 회수 체 제 는 old 를 회수 하지 않 기 때문에 old 는 메모리 에 계속 존재 하고 사라 지지 않 습 니 다.우 리 는 이 특성 을 이용 하여 계승 합 니 다.
아래 sayName 을 실행 할 때 저 희 는 위 에 저 장 된 인용 을 따라 해당 하 는 인 자 를 차례대로 찾 은 다음 에 해당 하 는 함 수 를 찾 아서 실행 합 니 다.
이런 방법 은 여전히 부족 하 다.
1.재 부팅 은 서로 다른 수량의 매개 변수 에 만 적용 되 지만 유형,매개 변수 또는 다른 것 을 구분 하지 않 습 니 다.
2.이 방법 은 함수 호출 비용 이 있 을 것 입 니 다.패 킷 을 닫 으 면 메모리 가 차지 하기 때 문 입 니 다.고성능 응용 상황 에 서 는 적합 하지 않다.
총결산
위 에서 말 한 것 은 소 편 이 소개 한 자 바스 크 립 트 에서 매개 변수 개 수 를 사용 하여 리 셋 기능 을 실현 하 는 것 입 니 다.여러분 에 게 도움 이 되 기 를 바 랍 니 다.궁금 한 점 이 있 으 시 면 메 시 지 를 남 겨 주세요.소 편 은 제때에 답 해 드 리 겠 습 니 다.여기 서도 저희 사이트 에 대한 여러분 의 지지 에 감 사 드 립 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[2022.04.19] 자바스크립트 this - 생성자 함수와 이벤트리스너에서의 this18일에 this에 대해 공부하면서 적었던 일반적인 함수나 객체에서의 this가 아닌 오늘은 이벤트리스너와 생성자 함수 안에서의 this를 살펴보기로 했다. new 키워드를 붙여 함수를 생성자로 사용할 때 this는...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.