ecmascript中的建構函式可以用來建立特定型別的物件。比如object和array這樣的原生建構函式,在執行時會自動出現在執行環境中。也可以建立自定義的建構函式,從而定義自定義物件型別的屬性和方法
function
person
(name,age,job)
}var person1 =
newperson
("李白",50
,"詩人");
var person2 =
newperson
("王羲之",60
,"書法家");
person1.
sayname()
;person2.
sayname()
;
與工廠模式相比:
沒有顯式的建立物件
直接將屬性和方法賦值給了this物件
沒有return語句
注意:按照慣例,建構函式始終應該以乙個大寫字母開頭,而非建構函式應該以乙個小寫字母開頭。主要是為了區別於ecmascript中的其他函式;因為建構函式本身也是函式,只不過可以用來建立物件而已。
呼叫建構函式建立新例項:
要建立person的新例項,必須使用new操作符。以這種方式呼叫建構函式實際上會經歷以下4個步驟:
(1)建立乙個新物件
(2)將建構函式的作用域賦值給新物件(因此this指向這個新物件)
(3)執行建構函式中的**(為這個新物件新增屬性)
(4)返回新物件
這兩個物件(person1,person2)都有乙個constructor(建構函式)屬性,該屬性都指向person
console.
log(person1.constructor === person)
;//true
console.
log(person2.constructor === person)
;//true
建構函式的問題
使用建構函式的主要問題,就是每個方法都要在每個例項上重新建立一遍。在上面的例子中,person1和person2都有乙個sayname()的方法,但是這兩個方法不是同乙個function的例項。其實上面的person函式也可以這樣定義:
function
person
(name,age,job)
建立物件 建構函式模式
ecmascript中的建構函式可以用來創造特定型別的物件,object和array 是原生建構函式,在 執行時會自動出現在執行環境。也可以自定義建構函式,示例如下 function person name,age,job var person1 new person wsc 25,software...
JavaScript 建立物件 建構函式模式
建構函式模式 ecmascript中的建構函式可以用來建立特定型別的物件,也可以建立 例2 function person name,age var person1 new person tim 35 var person2 new person bob 40 person1.getname tim...
建構函式模式
已經n天沒有學習了。中間辦了好多事,關乎人生大事,所以斷了學習。貌似理由很充分。總之,今天是十一長假的第二天,沒打算出去玩,把前段時間沒學習的趕緊彌補一下吧。上回說到建立物件時用的工廠模式,減少了 重複,可是不能區分出每個例項所對應的物件,於是建構函式登場了。function createobjec...