《JS設計模式筆記》建構函式和工廠模式建立物件

2022-07-05 00:57:11 字數 1463 閱讀 1675

工廠模式

1

function

createperson (name,age,job) ;

9return

o;10

}; 11

var person1=createperson("terry",24,"software engineer");

12person1.sayname();

13var person2=createperson("terry2",24,"software engineer2");

14 person2.sayname();

建構函式模式

1

function

person(name,age,job)8}

9var person1=new person("terry",23,"engineer software");

10 person1.sayname();

person1物件有乙個constructor屬性,該屬性指向person,constuctor屬性最初是用來標識物件型別的。但是 instanceof操作符要更可靠一些。

1 alert(person1 instanceof object);//

ture

2 alert(person1 instanceof person);//

ture

自定義建構函式意味著將來可以將它的例項標識為一種特定的型別,這正是建構函式模式勝過工廠模式的地方。

建構函式也是函式,任何函式只要通過new操作符來呼叫,那它就可以做為建構函式;而任何函式不通過new操作符來呼叫,那它跟普通函式也不會有什麼兩樣。

1、當做建構函式來使用

1

var person=new person("terry",23,"software engineer");

2 person.sayname();

2、作為普通函式來呼叫

1 person("terry",25,"doctor");

2 window.sayname();

3,在另一物件作用域中呼叫

1

var o=new

object();

2 person.call(o,"terry",23,"nurse");

3 o.sayname();

當在全域性作用域中呼叫乙個函式時, this物件總是指向global物件(在瀏覽器中就是window物件)。

因此,在呼叫完函式之後,可以通過window物件來呼叫sayname()方法,並且還返回了"terry"。

這裡是在物件o的作用域中呼叫的,因此呼叫後 o 就擁有了所有屬性和 sayname()方法。

建構函式的問題

JS中的工廠模式和建構函式模式

工廠方法建立物件 function createperson name age gender return obj var obj2 createperson 豬八戒 18 男 var obj3 createperson 孫悟空 18 男 obj2.say 豬八戒 obj3.say 孫悟空使用工廠方...

js工廠方式和建構函式

工廠方式 工廠方式 封裝函式 function createperson name 3.出場 return obj var p1 createperson 小明 p1.showname var p2 createperson 小強 p2.showname 利用new簡化成建構函式 當new去呼叫乙個...

js設計模式 工廠模式

一.介紹 工廠模式主要出現在物件導向建立例項的過程中,其本質是為了更方便生成例項,因此 在遇到使用new時,就要是否要使用工廠模式 二.實現 1.uml類圖 2.實現 class product init fn1 fn2 class creator 測試 let creator new creato...