[ASP.NET AJAX]Function 대상 및 Type 류 의 방법 소개

지난번 에 우 리 는 전체적으로 자 바스 크 립 트 를 알 게 되 었 다. Microsoft AJAX Library 는 임시 적 인 일이 있어 서 가입 하지 않 은 사례 가 추상 적 으로 보 입 니 다.이번 에는 반드시 일부 사례 를 통 해 더욱 직관 적 으로 Asp.NET 를 만 날 것 입 니 다. Ajax 스 크 립 트 라 이브 러 리 의 중요 한 클래스 Type 입 니 다.이 종 류 는 대상 을 대상 으로 프로 그래 밍 을 확장 하 는 반사 방법 을 제공 합 니 다.이 종 류 를 통 해 우 리 는.NET 과 유사 한 일부(예 를 들 어 네 임 스페이스,클래스,매 거 진 등)기본 유형 을 등록 할 수 있 습 니 다.이 Type 류 는 window 에서 계승 되 는 글로벌 형식 으로 어떠한 네 임 스페이스 에 도 속 하지 않 습 니 다.다음은 Type 의 기본 적 인 방법 과 어떻게 실제 적 인 방법의 실현 방식 을 살 펴 보 겠 습 니 다.Type 류 를 인식 하기 전에 중요 한 대상 을 살 펴 보 겠 습 니 다.그것 이 바로 Function 대상 입 니 다.Function 대상 은 JavaScript 의 내부 대상 입 니 다.예 를 들 어 날짜 대상(Date),배열 대상(Array),문자 대상(String)과(Object,RegExp,Math,Error 등)이 모두 여기에 속 하 므 로 new 를 통 해 대상 을 예화 할 수 있 습 니 다.우리 가 흔히 볼 수 있 는 자 바스 크 립 트 가 설명 한 함 수 를 제외 하고 우 리 는 다음 과 같은 방법 으로 우리 의 함수 대상 을 구축 할 수 있다.var myFunction=new Function(arguments,statement)。저 는 스 크 립 트 에 익숙 하지 않 기 때문에 prototype(원형 대상 을 제시 하여 만 들 대상 의 유형 을 가리 키 고 이 원형 대상 의 방법 으로 같은 유형의 대상 을 더 많이 만 들 었 다 고 들 었 습 니 다.원본 모델 모델 은 대상 의 생 성 모델 에 속 합 니 다)에 대해 잘 모 르 겠 지만 간단 한 테스트 를 통 해Function 을 prototype 확장 하면 new 를 통 해 대상 을 설명 한 후에 그 를 인용 할 수도 있 고 Function 을 직접 호출 할 수도 있 습 니 다.(방법 이나 함수)Function.uName 을 직접 사용 하여 이 uName 을 확장 하면 Function.uName 을 통 해서 만 호출 할 수 있 습 니 다.이것 은.NET 의 정적 방법(C\#:static;VB:share),이런 것들 이 있 으 면 Asp.NET 를 보 겠 습 니 다. Ajax 에서 Function 확장 대상:
 
 Function.__typeName="Function"; 
 Function.createCallback=function(b,a){ 
   return function(){ 
    var e=arguments.length; 
    if(e>0){ 
      var d=[]; 
      for(var c=0;c<e;c++) 
        d[c]=arguments[c]; 
      d[e]=a; 
      return b.apply(this,d) 
     } 
     return b.call(this,a) 
   } 
 }; 
  Function.createDelegate=function(a,b){ 
    return function(){ 
      return b.apply(a,arguments) 
    } 
 }; 
 Function.emptyFunction=Function.emptyMethod=function(){}; 
위 에서 우 리 는 Function 이 하나의 속성 을 확장 한 것 을 알 수 있 습 니 다(type:Name)과 몇 가지 방법(new 를 사용 하면.NET 의 정적 대상 으로 호출 할 수 있 습 니 다. Function();다시 호출 하면"undefined"를 얻 을 수 있 습 니 다.이것 은 자바 스 크 립 트 의 가장 기본 적 인 것 일 수도 있 습 니 다.그러나 저 는 예전 에 이런 대상 으로 스 크 립 트 를 쓴 적 이 없고 체계 적 으로 자바 스 크 립 트 를 배 운 적 이 없 기 때문에 저 를 놀 리 지 마 세 요.)공부 하고 있 습 니 다.)위 에서 저 는 비교적 보기 드 문 콜/애플 리 를 발 견 했 습 니 다.인터넷 에서 검색 해 보 니<<<자 바스 크 립 트 를 전면적으로 이해 하 는 caller,callee,call,apply 개념>>>에 비교적 상세 한 소개 가 있 었 다.만약 내 가 틀 리 지 않 았 다 면:Function.create Callback("callback" method","callback argument")는 리 셋 과 관련 이 있 습 니 다.Function.createDelegate("object 는 보통 this","실행 하 는 방법"),즉 Function.createDelegate 가 만 든 프 록 시 방법 으로 b 방법 을 계승 하여 전체 프 록 시 과정 을 완성 합 니 다(정확 한 지 모 르 겠 습 니 다!).Function.empty Function/Function.empty Method 는 인터페이스 와 가상 함 수 를 위해 준비 해 야 합 니 다.Type 대상 은 Function 대상 을 계승 하여 Function 대상 에서 한층 더 연장 되 었 습 니 다.여기 서 우 리 는 Type 의 실현 과정 을 토론 하지 않 습 니 다.우 리 는 오늘 주로 Type 중의 중요 한 방법 을 살 펴 보 겠 습 니 다.Type 에는 모두 22 가지 방법 이 있 습 니 다.다음은 하나씩 소개 하 겠 습 니 다.[prototype]Type.callBaseMethod(instance,name,baseArguments)설명:   이 함 수 는 주로 기본 함수 중의 방법 을 호출 하 는데 C\#중의 base 에 해당 합 니 다.이 함 수 는 함 수 를 계승 할 때 만 사용 할 수 있다.인자:   instance:호출 될 기본 함수 의 현재 인 스 턴 스 는 보통 this 를 사용 합 니 다.   name:호출 될 기본 함수 의 이름 을 문자열 로 표시 합 니 다.   baseArguments:호출 될 기본 함수 의 인자 입 니 다.[prototype]Type.getBaseMethod(instance,name)설명:   기본 함수 의 방법 인 스 턴 스 를 참조 합 니 다.Function.call 함 수 를 통 해 방법 을 호출 하려 면 이것 은 당신 의 선택 입 니 다.그러나 나 는 이전 함수 와 의 차이 가 그리 크 지 않 고 멍청 하 다 고 생각한다.인자:   instance:이 함수 에서 호출 되 지 않 은 것 같 습 니 다.이전 함수 의 실현 은 이 함 수 를 통 해 함 수 를 얻 었 습 니 다.이 매개 변 수 는 1 중의 intance 매개 변 수 를 위 한 것 일 수도 있 습 니 다.저도 그들 이 왜 이렇게 하 는 지 모 르 겠 습 니 다.고수 자유 고수 의 이 치 를 모 르 겠 습 니 다!   name:당연히 인용 할 방법의 이름 입 니 다.prototype]Type.getBaseType()설명:    사실은'type:of'로 돌아 가 는 거 예요. this.__baseType 의 값 은"undefined"라면 null 로 돌아 갑 니 다.[prototype]Type.getInterfaces()설명:    이 를 통 해 현재 인 스 턴 스 가 실 현 된 인터페이스 대상 배열 을 가 져 올 수 있 습 니 다.Array 대상 입 니 다.[prototype]Type.getName()설명:    현재 대상 의 이름 을 되 돌려 줍 니 다.네 임 스페이스 와 클래스 이름 을 포함 하여"undefined"로 되 돌려 줍 니 다.[...]prototype]Type.implementsInterface(interfaceType)설명:    현재 클래스 가 interfaceType 인터페이스 에 있 는 모든 정 의 를 실현 했다 면 true 로 돌아 갑 니 다.그렇지 않 으 면 false 로 돌아 갑 니 다.이것 또한.NET 에서 핑 계 를 계승 하려 면 모든 방법 이나 속성 을 실현 해 야 한 다 는 약속 을 실현 할 수 있다.[prototype]Type.inheritsFrom(parent Type)설명:    이 방법 을 사용 하면 현재 인 스 턴 스 가 parentType 류 에서 계승 되 는 지 여 부 를 판단 할 수 있 습 니 다.예 를 들 어:var isInherited=ClassA.inheritsFrom(ClassB);현재 인 스 턴 스 가 parent Type 에서 계승 되면 true 로 돌아 갑 니 다.그렇지 않 으 면 false 로 돌아 갑 니 다.[prototype]Type.initializeBase(instance, baseArguments)설명:    이것 은 상당히 중요 한 함수 입 니 다.이 함 수 를 통 해 기 함수 의 구조 함 수 를 초기 화하 고 자신 을 기 함수 로 등록 할 수 있 습 니 다.그 중에서 intance 는 기본 클래스 를 초기 화 하 는 대상 으로 보통 this 를 사용 합 니 다.baseArguments 는 기본 함수 구조 함수 의 매개 변수 로 비어 있 을 수 있 습 니 다.[prototype]Type.isImplementedBy(typeInstance)설명:    이것 은 6 과 정반 대 입 니 다.type:Instance 가 인터페이스 에 있 는 모든 정 의 를 실 현 했 는 지 판단 하 는 데 사 용 됩 니 다.true 로 돌아 가 거나 그렇지 않 으 면 false 로 돌아 갑 니 다.[...]prototype]Type.isInstanceOfType(instance)설명:    클래스 가 인 스 턴 스 인지 아 닌 지 를 판단 하 는 현재 인 스 턴 스 는 클래스 가 그의 클래스(하위 클래스)를 계승 하 는 인 스 턴 스 인지 판단 하 는 데 사 용 됩 니 다.true/false 를 되 돌려 줍 니 다.prototype]Type.registerClass(typeName, baseType, interfaceTypes)설명:    이것 은 딱 봐 도 하나의 종 류 를 등록 하 는 것 을 알 수 있 습 니 다.baseType 과 interfaceTypes 는 모두 선택 할 수 있 습 니 다.동시에.NET 과 마찬가지 로 baseType 이 가장 많 고 인 터 페 이 스 는 괜 찮 습 니 다.이 방법 은 종 류 를 정 한 후에 초기 화 하기 전에 baseType 이 있 으 면 첫 번 째 줄 에서 Type.initializeBase 를 통 해 기본 함수 의 구조 함 수 를 예화 해 야 한다.[...]prototype]Type.registerInterface(typeName)설명:    하나의 종 류 를 인터페이스 로 등록 하고 인터페이스 중 부 는 모든 처리 함 수 를 포함한다.prototype]Type.resolveInheritance()설명:    이 방법 은 매우 재 미 있 습 니 다.기본 클래스 의 속성 을 복사 하여 현재 클래스 를 prototype 으로 확장 하 는 것 입 니 다.즉,대상 을 대상 으로 프로 그래 밍 하 는 반 사 를 확장 하 는 것 입 니 다.Type.getRootNamespaces()설명:    정적 함수(다른 사람 이 어떻게 부 르 는 지 모 르 겠 지만 정적 함수 라 고 부 르 면 됩 니 다.)이 방법 을 통 해 모든 네 임 스페이스 의 Array 배열(즉,하나의 배열 로 돌아 가 모든 네 임 스페이스 를 포함 합 니 다)을 얻 을 수 있 습 니 다.Type.isClass(type).Type.isInterface(type).Type.isNamespace(type).Type.parse(typeName,ns)설명:    대단 합 니 다.이 를 통 해.NET 의 Type.GetType("type,ns")을 이용 한 대상 을 만 들 수 있 습 니 다.Invoke();한 종 류 를 반사 하여 예화 하 다.ns 네 임 스페이스 를 선택 할 수 있 습 니 다.클래스 가 네 임 스페이스 에 있 지 않 으 면(예:Type 클래스)type Name 은 null 일 수 있 습 니 다.Type.registerNamespace(namespacePath)설명:    네 임 스페이스 를 등록 하 다.prototype]Type.registerEnum(name,flag)설명:    매 거 진 형식 으로 등록 되 어 있 습 니 다.flag 는 bit 형식 인지 여 부 를 판단 합 니 다.선택 할 수 있 습 니 다.Type.isEnum(type).Type.isFlags(type)에 호 라 고 쓰 여 있 습 니 다.예 는 추가 되 지 않 았 습 니 다.그리고 원래 의 이해 가 모호 한 것 같 습 니 다.사람들 이 더욱 직관 적 으로 이해 할 수 있 도록 몇 가지 예 를 여기에 두 었 습 니 다(html 파일).Enum 을 테스트 하려 면공간 으로 스 크 립 트 를 참조 하고 예 안의 스 크 립 트 는 Number 류 의 확장 이 없 기 때문에 Enum 을 테스트 할 수 없습니다.아,몇 시간 이 이렇게 지 났 지만 많이 익 혔 습 니 다.제 가 이 글 을 쓰 는 것 은 점점 모호 해 지고 있 습 니 다.만약 에 잘못된 점 이 있 으 면 빌 을 허락 해 주세요. 게 이 트 가 먼저 부자 가 된 후에 우 리 를 부유 하 게 이 끌 고 마지막 으로 모두 가 공동으로 부유 해 지 는 것 을 실현 합 니까?)

좋은 웹페이지 즐겨찾기