javascript建立物件的模式

2021-09-23 15:44:00 字數 2347 閱讀 8815

(1)工廠模式

(2)建構函式模式

(3)原型模式

(4)組合模式

(5)動態原型模式

(6)寄生建構函式模式

(7)穩妥建構函式模式

//工廠模式建立物件

function createobject(name,job)

return o;//把物件傳出去

}

//建構函式模式建立物件

function person(name,job)

}

但是,對於建構函式模式建立物件的方法,存在乙個問題就是每個方法都要在每個例項上建立一次,使得不同例項上的同名函式是不相等的。

//解決建構函式建立的不同的例項的同名函式不相等的問題

function person(name,job)

function sayname()

優點:利用建構函式模式可以建立自定義物件。

每個函式都有乙個原型屬性(prototype),是乙個指向被例項共享的屬性和方法的指標,也就是說,prototype就是通過呼叫建構函式建立的那個物件例項的原型物件,它可以讓所有例項共享屬性和方法

//利用原型模式建立物件

function person()

person.prototype.name="li";

person.prototype.job="student";

person.prototype.sayname=function();

var person=new person();

person.sayname();

alert(person.constructor==person)

也可以將person.prototype用物件字面量表示,但是這種做法也就是相當於重寫了原型物件

function person()

person.prototype=

}var person1=new person();

var person2=new person();

person1.friends.pop();

console.log(person2.friends)

但是,利用原型模式時,每次修改原型的屬性就會被所有例項共享,也就是說,如果只想修改其中乙個原型中屬性值(引用型別值),而不改變另乙個例項原型中的屬性值是原型屬性需要解決的問題,就像上面的**中一樣,person1對friends屬性的修改也會影響person2的friends屬性。

組合方式建立物件(建構函式模式定義屬性,在原型中定義方法和共享的屬性)

function person(name,job)

person.prototype=

}var person1=new person("li","student");

var person2=new person("li","student");

person1.friends.pop();

console.log(person1.friends)

這樣,就算person1對friends屬性的修改也不會影響person2的friends屬性,因為只是通過原型共享了方法,屬性是來自於建構函式的。

動態原型模式,把所有的資訊都封裝在建構函式中。

思路:在建構函式中,初始化原型(比如上述的物件中中,可以在建構函式中判斷sayname()方法是否存在,如果不存在,則在原型中定義

function person(name,job)

}}var person1=new person("li","student");

person1.sayname();

//寄生模式建立物件

function createperson(name,job)

return obj;

}var person1=new createperson("li","student");

穩妥模式與寄生模式的區別:建立物件的例項方法中不用this,不用new操作符呼叫建構函式

//穩妥模式建立物件

function createperson1(name,job)

return obj;

}var person1=createperson1("li","student");

person1.sayname();

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 ...