建立物件 工廠模式 建構函式

2022-03-10 00:49:14 字數 2116 閱讀 4419

1

//建立乙個物件,然後給這個物件新建屬性和方法23

var box = new object(); //

建立物件

4 box.user='fu'; //

新增屬性

5 box.age=23;

6 box.run=function()9

//this表示new object()例項化出來的那個物件

1011 alert(box); //

object object

12alert(box.user);

13alert(box.run());

1415

16var box2=new

object();

17 box2.user='baixc';

18 box2.age=24;

19 box2.run=function

()22

23alert(box2.run());

2425

2627

//工廠模式

28//

工廠模式解決了重複例項化的問題,但還有乙個問題,那就是識別問題,因為根本無法高興才他們到底是哪個物件的例項。

29function

creareobject(user,age);

36return obj; //

返回物件引用37}

3839

var box1=creareobject('fu',23); //

建立第乙個物件

40var box2=creareobject('baixc',22); //

建立第二個物件

4142 alert(box1.run()); //

列印第乙個物件例項的run()方法

43alert(box2.run());

4445 alert(typeof box1); //

object

46 alert(typeof box2); //

object

4748 alert(box1 instanceof object); //

true

49 alert(box2 instanceof object); //

true

5051

5253

//建構函式(構造方法)可以用來建立特定的物件。

54function box(user,age); //

這個分號是一定要加的

60};

6162

var box1=new box('fu',23);

63var box2=new box('baixc',22);

6465

alert(box1.run());

66alert(box2.run());

67 alert(box('fu',23)); //

建構函式,用普通函式呼叫一般是無效的,必須使用new運算子

6869

/*70

使用建構函式的方法,即解決了重複例項化的問題,又解決了物件識別的問題,但問題是,這裡並沒有new object(),為什麼可以例項化box(),這個是**來的呢?

7172

使用了建構函式的方法,和使用工廠模式的方法他們不同之處如下:

731、建構函式方法沒有顯示的建立物件(new object());

742、直接將屬性和方法賦值給this物件;

753、沒有return語句。

7677

78建構函式規範:

791、建構函式也是函式,但函式名第乙個字母大寫

802、必須new建構函式名(),new box(),而這個box第乙個字母也是大寫的。

813、必須使用new運算子

8283

*/84

85function box()

8889

90var o = new

object();

91 box.call(o,'fu',23); //

對向冒充

92 alert(o.run());

工廠模式建立物件和自定義建構函式建立物件的異同

自定義函式 function person name,age 複製 工廠模式 是32種設計模式的其中一種 function createobj name,age return obj 複製 相同點 1.都可以建立物件 2.都有引數 3.都是函式不同點 自定義函式 1.函式名首字母大寫 2.沒有new...

自定義建構函式建立物件和工廠模式建立物件的區別

工廠模式建立物件 function createobject name,age return obj var per createobject 小明 20 per.sayhi 自定義函式構造物件 自定義建構函式建立物件 做了四件事 1.在記憶體中開闢 申請一塊空閒的空間 空間,儲存建立的心得物件 2...

js建立物件方法 字面量, 建構函式,工廠模式

字面量的方法 var per1 readbook function 呼叫系統的建構函式 var per2 new object per2.name 大蛇丸 per2.age 30 per2.男 per2.eat function per2.play function console.log per2...