|
10 | 10 | docEle = doc.documentElement,
|
11 | 11 | arr = [],
|
12 | 12 | slice = arr.slice,
|
| 13 | + concat = arr.concat, |
13 | 14 | class2type = {},
|
14 | 15 | toString = class2type.toString,
|
15 | 16 | hasOwn = class2type.hasOwnProperty,
|
|
47 | 48 | version : 1,
|
48 | 49 | constructor : $,
|
49 | 50 | splice : arr.splice,
|
| 51 | + context : null, |
50 | 52 | init : function(selector, context){
|
51 | 53 | var obj = null,
|
52 | 54 | context = context || doc,
|
|
78 | 80 | obj = context.getElementById(selector.slice(1));
|
79 | 81 | } else if(selector.indexOf('.') == 0){ // $(".className")
|
80 | 82 | obj = this.getElementsByClassName(context, selector.slice(1));
|
| 83 | + |
81 | 84 | } else { // $("tagName")
|
82 | 85 | obj = context.getElementsByTagName(selector);
|
83 | 86 | }
|
| 87 | + this.context = doc; |
84 | 88 |
|
85 | 89 | return this.setArray(this.makeArray(obj));
|
86 | 90 | },
|
| 91 | + toArray : function(){ |
| 92 | + return slice.call(this); |
| 93 | + }, |
87 | 94 | setArray : function(obj){
|
88 | 95 | this.length = 0;
|
89 | 96 | Array.prototype.push.apply(this, obj);
|
|
126 | 133 | return res;
|
127 | 134 | }
|
128 | 135 | },
|
| 136 | + |
129 | 137 | each : function(callback){
|
130 | 138 | return $.each(this, callback);
|
131 | 139 | }
|
|
156 | 164 | }
|
157 | 165 |
|
158 | 166 |
|
159 |
| - // 常用工具函数 |
| 167 | + // 常用工具方法 |
160 | 168 | $.extend({
|
| 169 | + // 空函数快捷方式 |
| 170 | + noop : function(){}, |
161 | 171 | isFunction : function(obj){
|
162 | 172 | return $.type(obj) === 'function';
|
163 | 173 | },
|
|
174 | 184 | type : function(obj){
|
175 | 185 | return typeof obj === 'object' || typeof obj === 'function' ? class2type[toString.call(obj)] || 'object' : typeof obj;
|
176 | 186 | },
|
177 |
| - noop : function(){}, |
178 | 187 | each : function(obj, callback){
|
179 | 188 | var value,
|
180 | 189 | i = 0,
|
|
198 | 207 | }
|
199 | 208 |
|
200 | 209 | return obj;
|
| 210 | + }, |
| 211 | + /** |
| 212 | + * 合并两个参数 |
| 213 | + * @param first |
| 214 | + * @param end |
| 215 | + */ |
| 216 | + merge : function(first, second){ |
| 217 | + var len = second.length, |
| 218 | + i = first.length, |
| 219 | + j = 0; |
| 220 | + |
| 221 | + while(j < len){ |
| 222 | + first[i++] = second[j++]; |
| 223 | + } |
| 224 | + first.length = i; |
| 225 | + return first; |
| 226 | + }, |
| 227 | + map : function(elems, callback, arg){ |
| 228 | + var i = 0, |
| 229 | + value, |
| 230 | + ret = [], |
| 231 | + length = elems.length, |
| 232 | + isArray = _.isArraylike(elems); |
| 233 | + |
| 234 | + if(isArray){ |
| 235 | + for( ; i < length; i++){ |
| 236 | + value = callback(elems[i], i, arg); |
| 237 | + if(value != null){ |
| 238 | + ret.push(value); |
| 239 | + } |
| 240 | + } |
| 241 | + } else { |
| 242 | + for(i in elems){ |
| 243 | + value = callback(elems[i], i, arg); |
| 244 | + if(value != null){ |
| 245 | + ret.push(value); |
| 246 | + } |
| 247 | + } |
| 248 | + } |
| 249 | + return concat.apply([], ret); |
201 | 250 | }
|
202 | 251 | });
|
203 |
| - |
| 252 | + |
| 253 | + // DOM常规操作 |
204 | 254 | $.extend({
|
205 | 255 | append : function(){
|
206 | 256 | return true;
|
207 | 257 | }
|
208 | 258 | });
|
209 | 259 |
|
210 |
| - $.each('Boolean Number String Function Array Date RegExp Object Error'.split(' '), function(i, name){ |
| 260 | + // 'Boolean Number String Function Array Date RegExp Object Error'.split(' ') |
| 261 | + $.each(['Boolean', 'Number', 'String', 'Function', 'Array', 'Date', 'RegExp', 'Object', 'Error'], function(i, name){ |
211 | 262 | class2type['[object ' + name + ']'] = name.toLowerCase();
|
212 | 263 | });
|
213 | 264 |
|
214 | 265 | }(window));
|
| 266 | + |
| 267 | +// 2014-04-21 : 准备开发第一版 |
| 268 | +// 2014-04-30 : 完成$.type, $.each等方法 |
0 commit comments