JS类定义原型方法的两种实现的区别

常见的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段代码就明白了:

代码一:

<script> 
Foo1(); 

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

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

</script>


代码二:

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类定义原型方法的两种实现的区别 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值