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