hey you guys,兩個月沒有寫技術博客了。做爲一名有理想、有抱負的程序員,兩個月不寫技術博客,真該打。業精於勤,荒於嬉。行成於思,毀於隨。勤奮是必不可少的,從此養成一週至少一篇博客的習慣。好了,不瞎扯了,書歸正傳。 今天在作項目時,遇到了須要建立JavaScript對象的狀況。因此Bing了一篇老外寫的關於3種建立JavaScript對象的文章,看後跟着打了一遍代碼。感受方法挺好的,在這裏與你們分享一下。javascript
1、利用函數建立對象:php
//定義對象 function Animal(type) { this.name=""; this.type=type; this.introduction=function(){ return "個人名字是: "+this.name+",我屬於 "+this.type; } } var animal=new Animal("家禽"); //實例化咱們上面建立的對象 animal.name="小紅"; alert(animal.introduction()); //調用它的introduction函數(此時,頁面會彈出:個人名字是 小紅,我屬於 家禽);
這種方法,你們必定都很熟悉了。可是,使用這種方法會形成性能的損耗。在這裏,咱們是經過new關鍵子來實例化對象的。其實,new關鍵子是作了兩件事。一,定義了一個匿名方法(Animal)。2、調用它。這樣就不如咱們接下來要介紹的方法高效了。java
2、利用對象字面量(object literals):程序員
不知道翻譯的對不對,待會我會把原文地址告訴你們,有興趣的能夠看原文。設計模式
//定義對象 var Book= { name:"紅樓夢", type:"文學做品", getAuthor:function() { return :"我是曹雪芹的孩子!"; } } alert(Book.GetAuthor()); //調用對象方法,此時頁面會出現:我是曹雪芹的孩子。 Book.name="灌籃"; //修改對象屬性 alert(Book.name); //此時,頁面會彈出:灌籃
相信你們看到代碼,應該明白了爲何說這個方法會高效一些了。由於,它至關於定義了一個JavaScript全局變量。咱們能夠直接用它,不須要實例化它。可是,這樣看起來怪怪的啊。那麼,解決方案來了。咱們來看看第三種方法吧。函數
3、單例模式(Singleton using a function):性能
翻譯成單例模式,可能不是太妥。先看代碼吧:this
//定義對象 var Gender=new function() { this.type="女生"; this.speaking=function() { return "我是"+this.type; } } alert(Gender.speaking();) //使用對象 此時頁面會出現:我是女生。
你們看這段兒代碼,是否是與咱們的方法一很像呢?可是,它可像方法一那樣工做的。方法一,用一次對象,就要建立一次對象。這個方法,建立一次對象,就能夠永久使用。因此,這種方式,很相似於設計模式中的單例模式。spa
原文地址:http://www.phpied.com/3-ways-to-define-a-javascript-class/翻譯