JavaScript 에서 매개 변수 개 수 를 사용 하여 리 셋 기능 을 실현 합 니 다.

3109 단어 js무 거 운 짐
매개 변수의 개 수 를 이용 하여 무 거 운 짐 을 싣 는 방법 은 바로 생각 나 는 방법 이다.

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.이 방법 은 함수 호출 비용 이 있 을 것 입 니 다.패 킷 을 닫 으 면 메모리 가 차지 하기 때 문 입 니 다.고성능 응용 상황 에 서 는 적합 하지 않다.
총결산
위 에서 말 한 것 은 소 편 이 소개 한 자 바스 크 립 트 에서 매개 변수 개 수 를 사용 하여 리 셋 기능 을 실현 하 는 것 입 니 다.여러분 에 게 도움 이 되 기 를 바 랍 니 다.궁금 한 점 이 있 으 시 면 메 시 지 를 남 겨 주세요.소 편 은 제때에 답 해 드 리 겠 습 니 다.여기 서도 저희 사이트 에 대한 여러분 의 지지 에 감 사 드 립 니 다!

좋은 웹페이지 즐겨찾기