国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

JavaScript的面向對象方法以及差別

2024-05-06 14:18:19
字體:
來源:轉載
供稿:網友
第一種:使用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來說,更加高效。 

第二步作內存占用的測試,把total.push(c);這行的注釋去掉,之所以要把它們加入到數組里面去,防止創建的時候,對象比較多的時候,沒有被引用的對象被GC了。結果發現差距不是一般的大,第一種方法要占用二三十M的內存,而第二種只需要一百多K。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 邯郸县| 桃园县| 阳原县| 安阳市| 苏尼特右旗| 绍兴县| 宁津县| 都安| 壶关县| 鲜城| 丹寨县| 防城港市| 壤塘县| 雅江县| 金门县| 永登县| 武汉市| 如东县| 雅安市| 方山县| 新宁县| 宁阳县| 龙门县| 香格里拉县| 南乐县| 天峨县| 淳化县| 广河县| 古浪县| 沧源| 普宁市| 肥东县| 黔东| 鄂州市| 桃园县| 汝阳县| 吉隆县| 中西区| 石台县| 海口市| 重庆市|