首先声明js是脚本性语言,非面向对象语言。我这里所做的是尝试用js将面向对象中的各种特性模拟出来。
1
//定义类
2![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
3
var Test=function()
4![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
5
{
6![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
7
//定义私有变量
8![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
9
//这里的私有变量是指Test内部的变量
10![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
11
var priParam="Private";
12![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
13
//定义共有变量,外界及Test内部函数也可访问到
14![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
15
//这里的this指向Test
16![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
17
this.pubParam="Public";
18![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
19
20![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
21
//定义私有函数
22![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
23
var priFun=function()
24![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
25
{
26![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
27
//这里可以访问私有变量
28![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
29
alert(priParam);
30![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
31
//这里的var变量,其作用域为priFun内,外部无法访问
32![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
33
var theParam1="theParam1";
34![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
35
alert(theParam1);
36![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
37
//这里定义this指向Test,定义this. pubParam2,其实作用就是定义了Test. pubParam2
38![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
39
//但是却访问不到pubParam,借用面向对象的说法因为pubParam不是静态变量,必须Test实例化后才可以访问
40![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
41
this. pubParam2="pubParam2";
42![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
43
alert(pubParam2);
44![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
45
alert(this.pubParam2);
46![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
47
//这里会报错
48![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
49
//alert(this.pubParam);
50
}
51![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
52![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
53![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
54
//定义公有函数
55![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
56
this.pubFun=function()
57![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
58
{
59![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
60
//可以访问定义的私有函数
61![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
62
priFun();
63![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
64
//可以访问私有变量
65![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
66
alert(priParam);
67![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
68
//可以访问公有变量
69![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
70
alert(this.pubParam);
71![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
72
}
73![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
74![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
75![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
76
//定义初始化函数
77![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
78
this.Create=function()
79![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
80
{
81![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
82
priParam="Private Param";
83![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
84
this.pubParam="Public Param";
85![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
86
}
87![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
88
this.Create();
89![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
90
}
91![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
92![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
93![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
94
//定义并实例化一个类实例
95![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
96
//这里实际调用了Test.Create();
97![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
98
var test=new Test();
99![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
100
//Test中用this定义的变量,实例化后可以被访问,但是没办法访问priParam
101![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
102
alert(test.pubParam);
103![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
104
alert(test.priParam); //会提示为undefined
105![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
106
//可以调用pubFun();但无法调用priFun();
107![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
108
test.pubFun();
109![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
110
//test.priFun(); //这里会报错
111![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
2
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
3
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
4
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
5
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
6
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
7
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
8
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
9
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
10
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
11
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
12
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
13
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
14
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
15
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
16
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
17
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
18
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
19
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
20
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
21
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
22
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
23
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
24
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
25
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
26
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
27
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
28
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
29
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
30
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
31
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
32
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
33
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
34
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
35
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
36
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
37
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
38
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
39
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
40
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
41
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
42
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
43
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
44
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
45
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
46
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
47
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
48
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
49
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
50
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
51
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
52
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
53
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
54
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
55
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
56
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
57
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
58
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
59
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
60
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
61
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
62
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
63
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
64
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
65
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
66
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
67
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
68
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
69
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
70
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
71
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
72
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
73
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
74
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
75
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
76
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
77
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
78
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
79
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
80
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
81
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
82
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
83
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
84
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
85
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
86
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
87
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
88
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
89
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
90
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif)
91
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
92
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
93
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
94
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
95
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
96
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
97
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
98
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
99
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
100
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
101
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
102
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
103
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
104
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
105
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
106
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
107
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
108
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
109
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
110
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
111
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
看了上面的代码后,有心人就会发现在变量定义中var 和 this 的作用非常不一样,我们现在是知其然,那么其所以然是如何的呢?
先吃饭,回头说