創(chuàng)建、調(diào)用JavaScript對象的方法集錦

字號:


    今天在做項目時,遇到了需要創(chuàng)建JavaScript對象的情況。所以Bing了一篇老外寫的關(guān)于3種創(chuàng)建JavaScript對象的文章,看后跟著打了一遍代碼。感覺方法挺好的,在這里與大家分享一下。
    一、利用函數(shù)創(chuàng)建對象:
    代碼如下:
    //定義對象
    function Animal(type)
    {
    this.name="";
    this.type=type;
    this.introduction=function(){
    return "我的名字是: "+this.name+",我屬于 "+this.type;
    }
    }
    var animal=new Animal("家禽"); //實例化我們上面創(chuàng)建的對象
    animal.name="小紅";
    alert(animal.introduction()); //調(diào)用它的introduction函數(shù)(此時,頁面會彈出:我的名字是 小紅,我屬于 家禽);
    這種方法,大家一定都很熟悉了。但是,使用這種方法會造成性能的損耗。在這里,我們是通過new關(guān)鍵子來實例化對象的。其實,new關(guān)鍵子是做了兩件事。一,定義了一個匿名方法(Animal)。二、調(diào)用它。這樣就不如我們接下來要介紹的方法高效了。
    二、利用對象字面量(object literals):
    不知道翻譯的對不對,待會我會把原文地址告訴大家,有興趣的可以看原文。
    代碼如下:
    //定義對象
    var Book=
    {
    name:"紅樓夢",
    type:"文學(xué)作品",
    getAuthor:function()
    {
    return :"我是曹雪芹的孩子!";
    }
    }
    alert(Book.GetAuthor()); //調(diào)用對象方法,此時頁面會出現(xiàn):我是曹雪芹的孩子。
    Book.name="灌籃"; //修改對象屬性
    alert(Book.name); //此時,頁面會彈出:灌籃
    相信大家看到代碼,應(yīng)該明白了為什么說這個方法會高效一些了。因為,它相當于定義了一個JavaScript全局變量。我們可以直接用它,不需要實例化它。但是,這樣看起來怪怪的啊。那么,解決方案來了。我們來看看第三種方法吧。
    三、單例模式(Singleton using a function):
    翻譯成單例模式,可能不是太妥。先看代碼吧:
    代碼如下:
    //定義對象
    var Gender=new function()
    {
    this.type="女生";
    this.speaking=function()
    {
    return "我是"+this.type;
    }
    }
    alert(Gender.speaking();) //使用對象 此時頁面會出現(xiàn):我是女生。
    大家看這段兒代碼,是不是與我們的方法一很像呢?但是,它可像方法一那樣工作的。方法一,用一次對象,就要創(chuàng)建一次對象。這個方法,創(chuàng)建一次對象,就可以永久使用。所以,這種方式,很類似于設(shè)計模式中的單例模式。