主頁(yè) > 知識(shí)庫(kù) > JavaScript面向?qū)ο蟮膬煞N書(shū)寫(xiě)方法以及差別

JavaScript面向?qū)ο蟮膬煞N書(shū)寫(xiě)方法以及差別

熱門標(biāo)簽:調(diào)度系統(tǒng)外呼 宜賓語(yǔ)音外呼系統(tǒng)軟件 伊春外呼業(yè)務(wù)系統(tǒng) 福建外呼增值業(yè)務(wù)線路 河北智能外呼系統(tǒng)軟件 中國(guó)辦理電信400電話 綿陽(yáng)防封電銷卡價(jià)格 電銷機(jī)器人教育 電銷機(jī)器人源碼網(wǎng)盤(pán)下載
javascript中的對(duì)象JS作為一種動(dòng)態(tài)語(yǔ)言,在語(yǔ)法上有相當(dāng)大的自由度,所以造成了一種功能,有N種寫(xiě)法的局面。

在JS中實(shí)現(xiàn)OOP,一般來(lái)說(shuō)有兩種方法:

第一種:使用this關(guān)鍵字

function Class1()
{
    this.onclick = function(e)
    {
        for (var i=0; i  1000; i++)
        {
            var a = new Date();
        }
    } 



使用this.的方法可以很靈活地給對(duì)象添加屬性和方法,而且和大部分的OOP語(yǔ)言都相似,甚至在運(yùn)行中都可以添加。

第二種:使用prototype關(guān)鍵字

function clickFunc(e)
{
    for (var i=0; i  1000; i++)
    {
        var a = new Date();
    }


function Class2()




Class2.prototype.onclick = clickFunc; 

這種用法上來(lái)講就沒(méi)有第一種顯得靈活。不過(guò)在一個(gè)對(duì)象new出來(lái)之前,也是一樣可以隨時(shí)添加一個(gè)對(duì)象的屬性和方法。

可是他們并不是相等的,相對(duì)來(lái)說(shuō),我更喜歡第一種,因?yàn)榈谝环N方法相對(duì)比較集中,比較容易閱讀代碼。但是在運(yùn)行的時(shí)候,他們運(yùn)行的效率卻差別相當(dāng)?shù)卮?。以下讓我們看一下測(cè)試代碼吧:

var total = new Array(); 

function Test1()
{
    var a = new Date();
    for (var i=0; i  10000; i++)
    {
        var c = new Class1();
        //total.push(c);
    }
    var b = new Date();
    alert(b.getTime()-a.getTime());


function Test2()
{
    var a = new Date();
    for (var i=0; i  10000; i++)
    {
        var c = new Class2();
        //total.push(c);
    }
    var b = new Date();
    alert(b.getTime()-a.getTime());


第一步作執(zhí)行時(shí)間的測(cè)試:發(fā)現(xiàn)Test1()需要142ms,而Test2()僅需50ms.發(fā)現(xiàn)時(shí)間效率上來(lái)說(shuō),prototype的方法相對(duì)this來(lái)說(shuō),更加高效。 

javascript的對(duì)象第二步作內(nèi)存占用的測(cè)試,把total.push(c);這行的注釋去掉,之所以要把它們加入到數(shù)組里面去,防止創(chuàng)建的時(shí)候,對(duì)象比較多的時(shí)候,沒(méi)有被引用的對(duì)象被GC了。結(jié)果發(fā)現(xiàn)差距不是一般的大,第一種方法要占用二三十M的內(nèi)存,而第二種只需要一百多K。
javascript創(chuàng)建對(duì)象
成因推斷:
在處理這兩種代碼的時(shí)候,第一種,JS的解析器,給每個(gè)對(duì)象都創(chuàng)建一個(gè)單獨(dú)的方法,這樣增加了內(nèi)存的開(kāi)銷,同時(shí)創(chuàng)建方法的時(shí)候,增加了運(yùn)行時(shí)間。第二種,JS的解析器和大部分的OOP編譯器一樣的,把對(duì)象的數(shù)據(jù)段和方法段分開(kāi)存儲(chǔ)了,對(duì)于對(duì)象的私有數(shù)據(jù),則是每個(gè)對(duì)象一份,而這些方法,則是放在公共的方法段里,所以可以減少運(yùn)行時(shí)間和內(nèi)存的開(kāi)銷。
您可能感興趣的文章:
  • JavaScript面向?qū)ο缶幊?/li>
  • 不錯(cuò)的JavaScript面向?qū)ο蟮暮?jiǎn)單入門介紹
  • JS面向?qū)ο?、prototype、call()、apply()
  • javascript 面向?qū)ο笕吕砭氈當(dāng)?shù)據(jù)的封裝
  • Javascript 面向?qū)ο螅ㄒ唬?共有方法,私有方法,特權(quán)方法)
  • JS左右無(wú)縫滾動(dòng)(一般方法+面向?qū)ο蠓椒ǎ?/li>
  • jquery方法+js一般方法+js面向?qū)ο蠓椒▽?shí)現(xiàn)拖拽效果
  • javascript面向?qū)ο笕腴T基礎(chǔ)詳細(xì)介紹
  • 學(xué)習(xí)javascript面向?qū)ο?理解javascript對(duì)象

標(biāo)簽:電商邀評(píng) 新鄉(xiāng) 優(yōu)質(zhì)小號(hào) 河池 銅川 那曲 延邊 蘇州

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《JavaScript面向?qū)ο蟮膬煞N書(shū)寫(xiě)方法以及差別》,本文關(guān)鍵詞  JavaScript,面向,對(duì)象,的,兩種,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《JavaScript面向?qū)ο蟮膬煞N書(shū)寫(xiě)方法以及差別》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于JavaScript面向?qū)ο蟮膬煞N書(shū)寫(xiě)方法以及差別的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章