【読書ノート】「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  */