工廠模式
functionfactorial(name,age);
return
o; }
var result=factorial("lily",25);
result.sayname();
缺點:沒有解決物件識別問題,即無法知道物件的型別
建構函式模式
functionperson(name,age)
}var obj=new person("lily",30);
優點:沒有顯式的建立物件;
直接將屬性和方法賦給了this物件;
沒有return語句;
缺點:每個方法都要在每個例項上重新建立一遍
原型模式
缺點:原型中所有屬性是被很多例項共享的,這種共享對於函式非常合適。對於那些包含基本值的屬性倒也說得過去,畢竟,通過在實力上新增乙個同名的屬性,可以隱藏原型中的對應屬性,但對於包含引用型別值得屬性來說,問題就比較突出了,如下**所示:
functionperson()
person.prototype.name="lily";
person.prototype.age="25";
person.prototype.sayname=function
(); person.prototype.friend=["lucy","fang"];
var newobj=new
person();
newobj.friend.push("newfriend");
var newobj02=new
person();
alert(newobj02.friend);
混合模型
functionmixedfunction(name,age)
mixedfunction.prototype.sayname=function
();
var mixobj=new mixedfunction("lily",25);
mixobj.sayname();
動態原型模式
就是通過檢查某個應該存在的方法是否有效,來決定是否需要初始化原型
functiondynamicfunction(name,age)}}
var obj=new dynamicfunction("liy",25);
obj.sayname();
寄生構造模式
(除了使用new操作符並把使用的包裝函式之外,這個模式跟工作模式其實一樣)
該函式的作用僅僅是封裝建立物件的**,然後再返回新建立的物件
functionperson(name,age);
return
o; }
var friend=new person("lily",25);
friend.sayname();
穩妥建構函式
這種方式適合用在不允許引用this的物件,穩妥物件最適合在一些安全的環境中(這些環境中會禁止使用this和new),或者在防止資料被其他應用程式(如mashup)改動時使用
functionperson(name,age);
return
o; }
var friend=new person("lily",25);
friend.sayname();
該函式中的name只允許呼叫sayname()方法外,沒有別的方式可以訪問其name值
js物件導向之物件建立篇
建立物件的方式 1.object建構函式或者物件字面量建立當物件 2.建構函式建立物件 3.工廠模式 4.原型模式 5.原型和建構函式組合模式 6.動態原型模式 7.寄生建構函式模式 8.穩妥建構函式模式 缺點使用乙個介面建立很多物件,會產生大量重複 這種模式抽象了建立具體物件的過程.考慮到在ecm...
js建立物件之工廠模式
提取js 建立物件 工廠模式 ecmascript無法建立類,開發人員就發明了一種函式,用函式來封裝以特定介面建立物件的細節 function createperson name age job return o var person1 createperson 寶清老窖 29 software e...
js 建立js物件
js建立類有集中方法,我個人比較喜歡的方式是 混合的建構函式 原型方式 比較好理解 用建構函式來定義非函式屬性,用原型方式定義物件的函式屬性,結果所有函式鬥只建立一次,而每個物件鬥具有自由的物件屬性例項。function ocar color ocar.prototype.showcolor fun...