Javascript建立物件的幾種方法

2021-09-01 04:20:36 字數 2040 閱讀 9898

工廠模式

優點:接受引數,可以無數次的呼叫這個函式,建立person物件,而每次他都可以返回乙個包含三個屬性乙個方法的物件。

缺點:雖然解決了建立多個相似物件的問題,但是沒有解決物件識別的問題(即怎麼知道乙個物件的型別)。

建構函式模式

js中可以建立自定義的建構函式,從而定義自定義物件屬性和方法。

person()中的**和createperson()的不同之處:

1、沒有顯式地建立物件

2、直接將屬性和方法賦給了this物件

3、沒有return語句

♦ 要建立person物件的新例項,必須使用new操作符。以這種方式呼叫建構函式世紀上會經歷一下四個步驟:

1、建立乙個新物件。

2、將建構函式的作用域賦給新物件(因此this就指向這個新物件)

3、執行建構函式中的**(為這個新物件新增屬性)

4、返回新物件

優點:建立自定義的建構函式意味著將來可以將它的例項標識為一種特定的型別。

缺點:每個方法都要在每個例項上重新創新一遍。person1,person2都有乙個名為sayname()的方法,但這兩個方法不是同乙個function的例項。因為ecmascript中的函式是物件,所以每定義乙個函式都是例項化了乙個物件。

原型模式

♦理解原型物件

1、我們建立的每個函式都有乙個prototype(原型)屬性,這個屬性是乙個指標,指向函式的原型物件。

2、預設情況下,所有原型物件都自動獲得乙個constructor屬性,這個屬性是乙個指向prototype屬性所在函式的指標。

3、當呼叫建構函式建立乙個新例項後,該例項的內部將包含乙個指標(內部屬性)[[prototype]],指向建構函式的原型物件。

注意:1、person 的每個例項都包含乙個內部屬性,該屬性僅僅指向了person。prototype;換句話說,他麼與建構函式之間沒有直接的關係。

2、雖然這兩個例項都不包含屬性和方法,但我們卻可以呼叫person1.sayname()。這是通過查詢物件屬性的過程來實現的。

優點:減少了**的重複,也可用標識來建立物件。

缺點:1、它省略了為建構函式傳遞初始化引數這一環節,結果所有勢力在預設情況下都將取得相同的屬性值。

2、原型中所有屬性是被很多勢力共享的,這種共享對函式來說非常適合,對於那些包含基本值的屬性也還說得過去,但是對於包含引用型別值的屬性來說,就是乙個問題了,因為例項一般都有屬於自己的全部屬性。

組合使用建構函式模式和原型模式

建構函式模式用於定義例項屬性,而原型模式用於定義方法和共享的屬性。這樣,每個例項都有自己的乙份實力屬性的副本,但同時又共享著對方法的引用,最大限度的節省了記憶體。而且還支援向建構函式傳遞引數。這種方式也是ecmascript種使用最廣泛,認同度最高的一種建立自定義型別的方法。

javascript物件的建立

function createoject name,return object var aa createoject zhangsan nan aa.run 利用第一種方式的問題就是不能識別他是什麼物件 function myobject name,var testobect new myobjec...

JavaScript物件的建立

var person new object person.name cjh person.age 19 var person 需要注意的是,花括號內,成員與成員之間以逗號隔開,而最後乙個成員後不能跟逗號,否則會在ie7及更早的版本中報錯。成員名也可以直接使用字串。其一大優點是可以向函式傳遞大量引數。...

JavaScript建立物件

一 建立單個物件 方式一 object建構函式 var o new object o.key value 方式二 物件字面量 方式一和二缺點 使用相同的介面建立很多物件會產生大量重複 使用方式三解決 方式三 工廠模式 使用函式封裝以特定介面建立物件的細節 function createobject ...