工廠模式
工廠模式是一種創(chuàng)建對(duì)象的方法。它通過(guò)定義一個(gè)工廠函數(shù),該函數(shù)返回一個(gè)新的對(duì)象。工廠函數(shù)可以設(shè)置對(duì)象的屬性和方法,并返回該對(duì)象。下面是一個(gè)示例: ``` function O(user, pwd){
工廠模式是一種創(chuàng)建對(duì)象的方法。它通過(guò)定義一個(gè)工廠函數(shù),該函數(shù)返回一個(gè)新的對(duì)象。工廠函數(shù)可以設(shè)置對(duì)象的屬性和方法,并返回該對(duì)象。下面是一個(gè)示例:
``` function O(user, pwd){ //使用構(gòu)造函數(shù) user; pwd; get; return this; } function O2(user, pwd){ //使用工廠方法 var obj new Object(); user; pwd; get; return obj; } function O3(){ //使用原型 } 'abc'; 'dis'; function O4(user, pwd){ user; pwd; return this; } function(){ alert('123'); } function test2(){ var a new O2('Us', 'Pw'); //使用工廠和構(gòu)造函數(shù)的混合 var a new O4('*U4', 'P4'); //使用構(gòu)造函數(shù)和原型的混合 (); } ```構(gòu)造函數(shù)模式
構(gòu)造函數(shù)模式是一種利用this關(guān)鍵字創(chuàng)建對(duì)象的方法。通過(guò)將構(gòu)造函數(shù)的作用域指向新對(duì)象,我們可以將當(dāng)前對(duì)象的屬性和方法賦給新對(duì)象。下面是一個(gè)示例:
``` var tanya new Person('Tanya'); var ansel Person('Ansel'); function Person(name) { name; function() { alert(); } } console.log(); console.log(); // Output: // [Function: Person] // [Function: Person] ``` 在上面的例子中,tanya和ansel都有一個(gè)constructor屬性,該屬性指向Person。需要注意的是,如果沒(méi)有使用new關(guān)鍵字調(diào)用構(gòu)造函數(shù),那么this指向的就是全局對(duì)象,在瀏覽器中是window對(duì)象。原型模式
原型模式是一種利用原型鏈實(shí)現(xiàn)對(duì)象共享屬性和方法的方法。使用原型方法,可以使多個(gè)對(duì)象共享同一個(gè)方法,而不必重復(fù)定義。下面是一個(gè)示例:
``` function Person(name) { name; } function() { console.log(); } var tanya new Person('Tanya'); var ansel new Person('Ansel'); console.log( ); // Output: true ``` 在上面的例子中,sayName方法被放置在了Person的原型上,這樣tanya和ansel的sayName方法其實(shí)指向同一個(gè)函數(shù)。這樣可以節(jié)省內(nèi)存空間,提高性能。結(jié)合使用
實(shí)際應(yīng)用中,并不是只能使用某一種模式,可以根據(jù)具體情況綜合使用不同的模式。例如,可以將所有信息都封裝在構(gòu)造函數(shù)中,同時(shí)通過(guò)在構(gòu)造函數(shù)中初始化原型,以兼顧構(gòu)造函數(shù)和原型的優(yōu)點(diǎn)。