一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - ASP教程 - JavaScript面向對象的兩種書寫方法以及差別

JavaScript面向對象的兩種書寫方法以及差別

2019-09-30 15:14建站經驗網 ASP教程

一直以來看到好多高手都用js 對象實現代碼的擴展,容易調用,思路明晰等特點,希望大家看完這篇文章后,可以繼續看本站提供的幾篇js面向對象的書寫方法的文章.

javascript中的對象JS作為一種動態語言,在語法上有相當大的自由度,所以造成了一種功能,有N種寫法的局面。 

在JS中實現OOP,一般來說有兩種方法: 

第一種:使用this關鍵字 

function Class1() 

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

}  

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

第二種:使用prototype關鍵字 

function clickFunc(e) 

    for (var i=0; i < 1000; i++) 
    { 
        var a = new Date(); 
    } 
}  

function Class2() 
{  

}  

Class2.prototype.onclick = clickFunc;  

這種用法上來講就沒有第一種顯得靈活。不過在一個對象new出來之前,也是一樣可以隨時添加一個對象的屬性和方法。 

可是他們并不是相等的,相對來說,我更喜歡第一種,因為第一種方法相對比較集中,比較容易閱讀代碼。但是在運行的時候,他們運行的效率卻差別相當地大。以下讓我們看一下測試代碼吧: 

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()); 
}  

第一步作執行時間的測試:發現Test1()需要142ms,而Test2()僅需50ms.發現時間效率上來說,prototype的方法相對this來說,更加高效。  

javascript的對象第二步作內存占用的測試,把total.push(c);這行的注釋去掉,之所以要把它們加入到數組里面去,防止創建的時候,對象比較多的時候,沒有被引用的對象被GC了。結果發現差距不是一般的大,第一種方法要占用二三十M的內存,而第二種只需要一百多K。 
javascript創建對象
成因推斷: 
在處理這兩種代碼的時候,第一種,JS的解析器,給每個對象都創建一個單獨的方法,這樣增加了內存的開銷,同時創建方法的時候,增加了運行時間。第二種,JS的解析器和大部分的OOP編譯器一樣的,把對象的數據段和方法段分開存儲了,對于對象的私有數據,則是每個對象一份,而這些方法,則是放在公共的方法段里,所以可以減少運行時間和內存的開銷。 

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 欧美日韩第二页 | 国产欧美精品专区一区二区 | 国产在线乱子伦一区二区 | 国产精品嫩草影院一二三区入口 | 国产免费一区不卡在线 | 香蕉在线播放 | 欧美成人二区 | 香港三级浴室女警官 | free性丰满hd性欧美人体 | 91制片厂(果冻传媒)原档破解 | 日本在线视频免费看 | 国产麻豆精品入口在线观看 | 亚洲国产成人在线视频 | 亚洲阿v天堂2018在线观看 | 欧美午夜性春猛交bbb | 九九99热久久999精品 | 99综合在线 | 99国产小视频 | 免费看一区二区三区 | 国产一卡二卡3卡4卡四卡在线视频 | 精品国产麻豆AV无码 | chinese帅男gay野外性 | 侮辱丰满美丽的人妻 | 欧美精品成人a多人在线观看 | 91天堂一区二区 | 厨房play黄瓜进入 | 日韩免费高清完整版 | 免费理伦片在线观看全网站 | 奇米社区| 国产一卡2卡3卡四卡高清 | 精品亚洲视频在线观看 | 国产精品国色综合久久 | 日本高清免费观看 | 白丝美女用胸伺候主人 | 四虎4hu新地址入口 四虎1515h永久 | 好吊日在线 | 国产成人精品一区二区阿娇陈冠希 | 日韩大片免费看 | 欧美性一区二区三区 | 女人又色又爽又黄 | 把内裤拔到一边高h1v1 |