最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JS類中定義原型方法的兩種實現(xiàn)的區(qū)別

 更新時間:2007年03月08日 00:00:00   作者:  
我們知道,給JavaScript類添加原形(prototype)方法是很簡單的。而且常用的有下面這兩種方法,可是這兩種方法在使用時有區(qū)別嗎?

    JScript Class:
 function JSClass()
 {

 }
    Extends prototype method:
 JSClass.prototype.MethodA = function()
 {

 };
    Or

 function = JSClass.prototype.MethodA()
 {

 };
其實這兩個原形定義方式可以簡化一下來討論,先把它們看作是兩個函數(shù),如下: 
  Foo1(); 

  function Foo1() 
  { 
      alert(’This is Foo1.’); 
  }
     和   Foo2(); 
  var Foo2 = function() 
  { 
      alert(’This is Foo2.’); 
  }

     運行第一個顯然是不會有任何錯誤的,可是運行第二個就有問題了,這時系統(tǒng)會說:Microsoft JScript runtime error: Object expected。這就是說函數(shù)定義(Foo1)在腳本解析器中有最高的初始化優(yōu)先級,這個很好理解。如果不優(yōu)先處理函數(shù),那么對于函數(shù)中的函數(shù)調(diào)用就沒有辦法處理了,假使我們先定fn1()再定義fn2(),卻從fn1中調(diào)fn2,那么就通不過解析了。為什么Foo2不能被初始化,F(xiàn)oo2的定義根本不是函數(shù)定義,它是一個標(biāo)準(zhǔn)的賦值語句,之所以能象標(biāo)準(zhǔn)函數(shù)一樣的使用Foo2(Foo2()),完全是因為它指向的是一個函數(shù)對象的實例而已。
再來看原形方法導(dǎo)入里的兩種方式,就很簡單了。并且不同的執(zhí)行優(yōu)先循序,也決了它們在使用中的不同,看如下示例: 
<script language="javascript">
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); 
    };   
}
</script>

     執(zhí)行: 
var nc = new NormalClass(); 
nc.Method1(); 
nc.Method2();

     是什么效果?為什么? 

相關(guān)文章

最新評論

九江县| 南江县| 柯坪县| 宣恩县| 英超| 北安市| 剑河县| 德惠市| 临颍县| 万盛区| 微博| 额尔古纳市| 瑞安市| 高雄市| 玛纳斯县| 辉县市| 普定县| 徐闻县| 湘乡市| 菏泽市| 微山县| 资兴市| 庆云县| 霞浦县| 宜阳县| 克山县| 岢岚县| 台北市| 金堂县| 永修县| 淳安县| 扎鲁特旗| 江华| 炎陵县| 静海县| 那坡县| 平阳县| 定结县| 社旗县| 白水县| 淄博市|