1 <!DOCTYPE html>
2 <html>
3 <head>
4 <meta charset="UTF-8">
5 <title>javascript高级语法2-高级类</title>
6 </head>
7 <body>
8 <script>
9 /*
10 //在js中利用function来定义类。
11 function Shape(){
12 var x=1;
13 var y=2;
14 }
15 //实例化对象;
16 var a = new Shape();
17 // 在类的内部用var定义的是私有变量。如何定义共有变量呢?
18 function Shape2(){
19 this.x = 1;
20 this.y = 2;
21 }
22 var b = new Shape2();
23 //this代表的是当前的实例。
24 alert(a.x); //undefined
25 alert(b.x); //1
26
27 //除了定义私有变量外 还可以用var定义私有函数。
28 function Shape3(){
29 var show=function(){
30 //私有函数
31 }
32 this.show2 = function(){
33 //公有函数
34 }
35 }
36
37 //用js模仿oop编程
38 function Shape4(x,y){
39 var a = 0,b = 0;
40 //模仿oop编程的构造函数
41 var init = function(){
42 a = x;
43 b = y;
44 };
45 init();
46
47 this.getX = function(){
48 return a;
49 }
50 }
51 var d = new Shape4(2,4);
52 alert(d.getX());
53
54 // js中的静态方法是作用到类身上的,而不是对象上
55 function Person(){this.str = "zhangdan"}
56 //静态变量
57 Person.age = 10;
58 Person.show = function(obj){
59 return obj.str
60 }
61 alert(Person.show(new Person()));
62
63
64 //简单类定义方法
65 var a = {};
66 var array = [];
67 a["name"] = "zhangdan";
68 alert(a.name);
69
70 */
71 //自定义map类
72 function jMap(){
73 //私有变量
74 var arr= {};
75 //增加
76 this.put = function(key,value){
77 arr[key] = value;
78 }
79 //查询
80 this.get = function(key){
81 if(arr[key]){
82 return arr[key]
83 }else{
84 return -1
85 }
86 }
87 //删除
88 this.remove = function(key){
89 delete arr[key]
90 }
91 //遍历
92 this.eachMap = function(fn){
93 for(var key in arr){
94 fn(key,arr[key]);
95 }
96 }
97 }
98
99 var country =new jMap();
100 country.put("01","zg");
101 country.put("02","tg");
102 country.put("03","mg");
103 country.put("04","jnd");
104
105 // alert(country.get("01"));
106
107 country.eachMap(function(key,value){
108 document.write(key+"-->"+value+"<br/>");
109 })
110 </script>
111 </body>
112 </html>