天天看点

javascript工厂模式和构造方法

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

<code>&lt;%@ page language=</code><code>"java"</code> <code>import=</code><code>"java.util.*"</code> <code>pageEncoding=</code><code>"UTF-8"</code><code>%&gt;</code>

<code>&lt;%</code>

<code>String path = request.getContextPath();</code>

<code>String basePath = request.getScheme()+</code><code>"://"</code><code>+request.getServerName()+</code><code>":"</code><code>+request.getServerPort()+path+</code><code>"/"</code><code>;</code>

<code>%&gt;</code>

<code>&lt;!DOCTYPE HTML PUBLIC </code><code>"-//W3C//DTD HTML 4.01 Transitional//EN"</code><code>&gt;</code>

<code>&lt;html&gt;</code>

<code>  </code><code>&lt;head&gt;</code>

<code>    </code><code>&lt;base href=</code><code>"&lt;%=basePath%&gt;"</code><code>&gt;</code>

<code>    </code> 

<code>    </code><code>&lt;title&gt;My JSP </code><code>'test3.jsp'</code> <code>starting page&lt;/title&gt;</code>

<code>    </code><code>&lt;meta http-equiv=</code><code>"pragma"</code> <code>content=</code><code>"no-cache"</code><code>&gt;</code>

<code>    </code><code>&lt;meta http-equiv=</code><code>"cache-control"</code> <code>content=</code><code>"no-cache"</code><code>&gt;</code>

<code>    </code><code>&lt;meta http-equiv=</code><code>"expires"</code> <code>content=</code><code>"0"</code><code>&gt;    </code>

<code>    </code><code>&lt;meta http-equiv=</code><code>"keywords"</code> <code>content=</code><code>"keyword1,keyword2,keyword3"</code><code>&gt;</code>

<code>    </code><code>&lt;meta http-equiv=</code><code>"description"</code> <code>content=</code><code>"This is my page"</code><code>&gt;</code>

<code>    </code><code>&lt;!--</code>

<code>    </code><code>&lt;link rel=</code><code>"stylesheet"</code> <code>type=</code><code>"text/css"</code> <code>href=</code><code>"styles.css"</code><code>&gt;</code>

<code>    </code><code>--&gt;</code>

<code>    </code><code>&lt;script src=</code><code>"js/jquery-2.1.1.min.js"</code><code>&gt;&lt;/script&gt;</code>

<code>    </code><code>&lt;script&gt;</code>

<code>        </code><code>//工厂模型</code>

<code>        </code><code>function</code> <code>CreatePerson(id,name,age){</code>

<code>            </code><code>var</code> <code>obj={};</code>

<code>            </code><code>obj.id=id;</code>

<code>            </code><code>obj.name=name;</code>

<code>            </code><code>obj.age=age;</code>

<code>            </code><code>obj.sayName=</code><code>function</code><code>(){</code>

<code>                </code><code>return</code> <code>this</code><code>.name;</code>

<code>            </code><code>}</code>

<code>            </code><code>return</code> <code>obj;</code>

<code>        </code><code>} </code>

<code>        </code><code>var</code> <code>p1=CreatePerson(1,</code><code>'zhangsan'</code><code>,23);</code>

<code>        </code><code>//alert(p1.id);</code>

<code>        </code><code>//alert(p1.sayName());</code>

<code>        </code> 

<code>        </code><code>//第二种方式:构造函数式,函数的第一个字母大写(类的模板)</code>

<code>        </code><code>function</code> <code>Person(id,name,age){</code>

<code>            </code><code>this</code><code>.id=id;</code>

<code>            </code><code>this</code><code>.name=name;</code>

<code>            </code><code>this</code><code>.age=age;</code>

<code>            </code><code>this</code><code>.sayName=</code><code>function</code><code>(){</code>

<code>        </code><code>}</code>

<code>        </code><code>//构造一个对象,new关键字,传递参数,执行模板代码,返回对象</code>

<code>        </code><code>var</code> <code>p2=</code><code>new</code> <code>Person(1,</code><code>'王五'</code><code>,45);</code>

<code>        </code><code>var</code> <code>p3=</code><code>new</code> <code>Person(2,</code><code>'赵六'</code><code>,23); </code>

<code>        </code><code>//alert(p2.sayName());</code>

<code>        </code><code>//alert(p2===p3);         //类的概念,根据模板创建出不同的对象</code>

<code>        </code><code>alert(p2.constructor==Person);        </code><code>//true</code>

<code>        </code><code>alert(p3.constructor==Person);        </code><code>//true</code>

<code>        </code><code>alert(p2 </code><code>instanceof</code> <code>Person);         </code><code>//true</code>

<code>        </code><code>alert(p2 </code><code>instanceof</code> <code>Object);         </code><code>//true</code>

<code>        </code><code>//创建对象的方式</code>

<code>        </code><code>//1.当做构造函数去使用</code>

<code>        </code><code>//var p2=new Person(1,'王五',45);</code>

<code>        </code><code>//2.普通方法的函数调用</code>

<code>        </code><code>Person(2,</code><code>'zhangsan'</code><code>,34);       </code><code>//在全局环境定义属性并复制,直接定义window对象上</code>

<code>        </code><code>//在一个对象的作用域中调用</code>

<code>        </code><code>var</code> <code>o=</code><code>new</code> <code>Object();</code>

<code>        </code><code>Person.call(o,2,</code><code>'zhangsan'</code><code>,34);        </code><code>//把Person方法绑定到o对象上</code>

<code>        </code><code>alert(o.name);</code>

<code>    </code><code>&lt;/script&gt;</code>

<code>  </code><code>&lt;/head&gt;</code>

<code>  </code> 

<code>  </code><code>&lt;body&gt;</code>

<code>    </code><code>This is my JSP page. &lt;br&gt;</code>

<code>  </code><code>&lt;/body&gt;</code>

<code>&lt;/html&gt;</code>

 本文转自 matengbing 51CTO博客,原文链接:http://blog.51cto.com/matengbing/1879238