JS클래스 정의 원형 방법의 두 가지 실현의 차이

2092 단어
일반적인 2중 원형 방법은 다음과 같습니다.
<script> 
function JSClass() 
{ 
    alert('This is JSClass');
} 

function JSClass.prototype.MethodA() 
{ 
     alert('This is MethodA');
};

JSClass.prototype.MethodB = function()
 {
       alert('This is MethodB');
 };
</script>

그러나 차이점도 있다. 주로 컴파일러가 주는 컴파일 우선순위가 다르다. 하나는 높은 우선순위의 함수이고, 하나는 낮은 우선순위의 부여 문장이다.
다음 2단계 코드를 실행하면 알 수 있습니다.
코드 1:
<script> 
Foo1(); 

  function Foo1() 
  { 
      alert('This is Foo1.'); 
  }

  Foo2(); 
  var Foo2 = function() 
  { 
      alert('This is Foo2.'); 
  }
 // Foo2();

</script>

코드 2:
function NormalClass() 
{ 
    this.m_Property1 = 'P1 in Normal Class.'; 
    this.m_Property2 = 'P2 in Normal Class.'; 
      
    this.toString = function() 
    { 
         return '[class NormalClass]'; 
    }
    
    return new InnerClass();   
    
    function InnerClass() 
    { 
         this.m_Property1 = 'P1 in Inner Class.';  
         this.m_Property2 = 'P2 in Inner Class.';  
          
         this.toString = function() 
         { 
              return '[class InnerClass]'; 
         }     
    }
     
    InnerClass.prototype.Method1 = function() 
    { 
         alert(this.m_Property1); 
    }; 
     
    function InnerClass.prototype.Method2() 
    { 
         alert(this.m_Property2); 
    };  
	
	// return new InnerClass();   
}

var nc = new NormalClass(); 

nc.Method1() // ; 
nc.Method2();
//InnerClass.prototype.Method1 = function() ,  function InnerClass.prototype.Method2()  

참고: JS클래스 정의 원형 방법의 두 가지 실현의 차이

좋은 웹페이지 즐겨찾기