【読書ノート】「JavaScriptモード」を読む-オブジェクト作成モード
17815 ワード
JavaScriptは簡潔で明瞭な言語であり、名前空間、モジュール、パッケージ、プライベート属性、およびスタティックメンバーなどの文法的特徴は他の言語では頻繁に使用されていない.
もちろん、上記の文法的特徴を実現するために他の方法を使ってシミュレーションします.
もちろん、上記の文法的特徴を実現するために他の方法を使ってシミュレーションします.
1 /**
2 * 1.
3 * 1> : (QIANGBA) (TIANLANG)、 (CYOU)
4 * 2>
5 *
6 * //
7 * var MYAPP = {};
8 * //
9 * if (typeof MYAPP === 'undefined') {
10 * var MYAPP = {};
11 * }
12 * //
13 * var MYAPP = MYAPP || {};
14 * , 。
15 * 2.
16 * 3.
17 * 1> ( )
18 * function Gadget() { // , 。
19 * //
20 * var name = 'iPod';
21 * //
22 * this.getName = function () { //
23 * return name;
24 * }
25 * }
26 * 2>
27 * 3>
28 * 4>
29 * var myobj = (function () {
30 * //
31 * var name = 'oh my baby';
32 * //
33 * return {
34 * getName: function () {
35 * return name;
36 * }
37 * }
38 * })();
39 * myobj.getName(); //oh my baby
40 * 5>
41 * , prototype 。
42 * 6>
43 * var myarray;
44 (function () {
45 var astr = '[Object Array]',
46 toString = Object.prototype.toString;
47 function isArray(a) {
48 return toString.call(a) === atr;
49 }
50 function indexOf(haystack, needle) {
51 var i = 0,
52 max = haystack.length;
53 for (; i < max; i++) {
54 if (haystack[i] === needle) {
55 return i;
56 }
57 }
58 return -1;
59 }
60 myarray = {
61 isArray: isArray,
62 indexOf: indexOf, // indexOf ( myarray.indexOf = null),
63 // indexOf() , inArray
64 inArray: indexOf
65 }
66 })();
67 */
68
69
70 /**
71 * 4.
72 * 1>
73 * 2>
74 * 3>
75 * 4>
76 *
77 * ----------- (a) -------------
78 * //(1)
79 MYAPP.namespace('MYAPP.utilities.array');
80 //(2)
81 MYAPP.utilities.array = (function () { //
82 //
83 var uobj = MYAPP.utilities.object,
84 ulang = MYAPP.utilities.lang,
85
86 //
87 array_string = '[Object Array]',
88 ops = Object.prototype.toString,
89
90 //
91 isArray = function (a) {
92 return opts.call(a) === array_string;
93 };
94 inArray = function (haystack, needle) {
95 var i = 0,
96 max = haystack.length;
97 for (; i < max; i++) {
98 if (haystack[i] === needle) {
99 return i;
100 }
101 }
102 return -1;
103 };
104
105 // API
106 return {
107 isArray: isArray,
108 indexOf: inArray
109 };
110
111 })();
112
113 ----------- (b) -------------
114 MYAPP.namespace('MYAPP.utilities.array');
115 MYAPP.utilities.array = (function () { //
116 //
117 var uobj = MYAPP.utilities.object,
118 ulang = MYAPP.utilities.lang,
119
120 //
121 Constr;
122
123 // API
124 Constr = function (o) {
125 this.elems = this.toArray(o);
126 };
127
128 Constr.prototype = {
129 constructor: MYAPP.utilities.Array,
130 version: '2.0',
131 toArray: function (obj) {
132 for (var i = 0, a = [], len = obj.length; i < len; i++) {
133 a[i] = obj[i];
134 }
135 return a;
136 }
137 };
138
139 //
140 return Constr;
141 })();
142
143 ----------- (c) -----------
144 MYAPP.utilities.module = (function (app, global) {
145 //
146 // (app)
147 })(MYAPP, this);
148 */
149
150 /**
151 * 5.
152 * 1>
153 * //
154 var Gadget = function () {};
155 //
156 Gadget.isShiny = function () {
157 return 'you bet';
158 };
159 //
160 Gadget.prototype.setPrice = function (price) {
161 this.price = price;
162 };
163 2> ( )
164 */
165
166 /**
167 * 6.
168 * return this;
169 */
170
171 /**
172 * 7.method()
173 */