本文實例講述了JavaScript面向對象程序設計創建對象的方法。分享給大家供大家參考,具體如下:
面向對象的語言具有一個共同的標志,那就是具有“類”的概念,但是在javascript中沒有類的概念,在js中將對象定義為“無序屬性的集合,其屬性可以包含基本值,對象或者函數”,即其將對象看作是一組名值對的散列表。這樣問題就來了,如何創建對象呢?
在最開始時使用object構造函數和對象字面量來創建單個對象,下面簡要介紹這兩種方法。
object構造函數:創建自定義對象的最簡單方式就是創建一個object的實例,然后為這個實例添加屬性和方法:
var person=new object();person.name="haha";person.age=20;person.job="搞笑工作者";person.sayName=function(){ alert(this.name);};在上面的代碼中,定義了一個person對象,并且添加了三個屬性和一個方法,其中方法采用的時函數表達式的方式實現,這是用object構造函數的方式創建一個對象。
對象字面量:
var person={ name:"haha", age:20, job:"搞笑工作者", sayName:function(){ alert(this.name); }}以上代碼中同樣創建了一個person對象,這種方法類似于代碼塊的方式,實現了對一個person對象的創建。
以上這兩種方法中,都需要大量重復定義,在我們需要創建對象時就需要重復以上代碼,不夠精煉,所以出現了工廠模式和構造函數模式類創建對象的方法。
工廠模式:
工程模式抽象了創建具體對象的過程(專業書籍中給出),其實說的比較明白點就是采用函數的形式,用函數來封裝創建對象的過程,再創建對象時以調用函數的形式創建。例如:
function createPerson(name,age,job){ var o=new object(); o.name="haha"; o.age=20; o.job="搞笑工作者"; o.sayName=function(){ alert(this.name); }; return o;}var person1=createPerson("hehe",22,"呵呵工作者");var person2=createPerson("heihei",23,"嘿嘿工作者");在這種工廠模式下,將以object構造函數創建對象的方法封裝到了一個函數中,在以后的創建對象的過程中,直接調用此方法就可以創建出一個接著一個的對象。
構造函數模式:
構造函數模式相對于工廠模式的優勢在于構造函數模式可以創建特定類型的對象。
function Person(name,age,job){ this.name=name; this.age=age; this.job=job; this.sayName=function(){ alert(this.name); };}var person1=new Person("hehe",22,"呵呵工作者");var person2=new Person("heihei",23,"嘿嘿工作者");在以上代碼中,定義一個Person()的方法,在Person()方法中,將其屬性進行了實例化,這種方法類似于在面向對象語言中在實例化類時直接會調用的構造函數,利用這種方法,將此函數大致相當于面向對象語言中的類,可以在以后的代碼中不斷的實例化,用以不斷創建出此類的對象。在Javascript中,這種構造函數也是一種函數,不過是專門用于創建對象而已。
新聞熱點
疑難解答
圖片精選