创建对象、工厂模式、构造函数

 1 //创建一个对象,然后给这个对象新建属性和方法
 2 
 3 var box = new Object();        //创建对象
 4 box.user='Fu';                //添加属性
 5 box.age=23;
 6 box.run=function(){
 7     return this.user+this.age+'运行中...';
 8 }
 9 //this表示new Object()实例化出来的那个对象
10 
11 alert(box);        //object Object
12 alert(box.user);
13 alert(box.run());
14 
15 
16 var box2=new Object();
17 box2.user='Baixc';
18 box2.age=24;
19 box2.run=function(){
20     return this.user+this.age+'运行中...';
21 }
22 
23 alert(box2.run());
24 
25 
26 
27 //工厂模式
28 //工厂模式解决了重复实例化的问题,但还有一个问题,那就是识别问题,因为根本无法高兴才他们到底是哪个对象的实例。
29 function creareObject(user,age){
30     var obj = nwe Object();        //创建对象
31     obj.user=user;                //添加属性
32     obj.age=age;
33     obj.run=function(){            //添加方法
34         return thi.user+this.age+'运行中...';
35     };
36     return obj;                    //返回对象引用
37 }
38 
39 var box1=creareObject('Fu',23);    //创建第一个对象
40 var box2=creareObject('Baixc',22);    //创建第二个对象
41 
42 alert(box1.run());    //打印第一个对象实例的run()方法
43 alert(box2.run());
44 
45 alert(typeof box1);    //object
46 alert(typeof box2);    //object
47 
48 alert(box1 instanceof Object);    //true
49 alert(box2 instanceof Object);    //true
50 
51 
52 
53 // 构造函数(构造方法)可以用来创建特定的对象。
54 function Box(user,age){    //创建一个对象
55     this.user=user;        //添加一个属性
56     this.age=age;
57     this.run=function(){
58         return this.user+this.age+'运行中...';
59     };        //这个分号是一定要加的
60 };
61 
62 var box1=new Box('Fu',23);
63 var box2=new Box('Baixc',22);
64 
65 alert(box1.run());
66 alert(box2.run());
67 alert(Box('Fu',23));    //构造函数,用普通函数调用一般是无效的,必须使用new运算符
68 
69 /*
70 使用构造函数的方法,即解决了重复实例化的问题,又解决了对象识别的问题,但问题是,这里并没有new Object(),为什么可以实例化Box(),这个是哪里来的呢?
71 
72 使用了构造函数的方法,和使用工厂模式的方法他们不同之处如下:
73 1、构造函数方法没有显示的创建对象(new Object());
74 2、直接将属性和方法赋值给this对象;
75 3、没有return语句。
76 
77 
78 构造函数规范:
79 1、构造函数也是函数,但函数名第一个字母大写
80 2、必须new构造函数名(),new Box(),而这个Box第一个字母也是大写的。
81 3、必须使用new运算符
82 
83 */
84 
85 function box(){        //普通函数首字母无需大写
86 
87 }
88 
89 
90 var o = new Object();
91 Box.call(o,'Fu',23);    //对向冒充
92 alert(o.run());
高否?富否?帅否? 否? 滚去学习!
原文地址:https://www.cnblogs.com/baixc/p/3390169.html