OSDN Git Service

Version 0.6.13, X.UI use X.Dom.Node.
[pettanr/clientJs.git] / 0.6.x / js / dom / 16_XDomNodeList.js
1 \r
2 X.Dom.NodeList = function( v ){\r
3         var args = [],\r
4                 l    = arguments.length,\r
5                 i    = 0,\r
6                 indexOf, xnode;\r
7         for( ; i < l; ++i ){\r
8                 args.push.apply( args, arguments[ i ] );\r
9         };\r
10         if( ( l = args.length ) === 1 ) return new X.Dom.Node( args[ 0 ] );\r
11         if( !this || this.append !== Node.prototype.append ) return new X.Dom.NodeList( args );\r
12         \r
13         this.__ = { type : 2 };\r
14         indexOf = Array.prototype.indexOf;\r
15         for( i = 0; i < l; ++i ){\r
16                 xnode = args[ i ];\r
17                 xnode = xnode && xnode.constructor === X.Dom.Node ? xnode : new X.Dom.Node( xnode );\r
18                 if( xnode._xnodeType !== 0 && indexOf.call( this, xnode ) === -1 ){\r
19                         this[ this.length ] = xnode;\r
20                         ++this.length;\r
21                 };\r
22         };\r
23 };\r
24 X.Dom.NodeList.prototype.length = 0;\r
25 \r
26 /* --------------------------------------\r
27  *  Fuction Base, multi, getter, setter,\r
28  */\r
29 (function(){\r
30         var target = X.Dom.NodeList.prototype,\r
31                 src    = X.Dom.Node.prototype,\r
32                 p, v, multi;\r
33 \r
34         for( p in src ){\r
35                 v = src[ p ];\r
36                 if( typeof v === 'funciton' && !target[ p ] ){\r
37                         target[ p ] = multi = new Function( [\r
38                                 'function functionBase(){',\r
39                                         'var a=arguments,s=a.callee,f=s.f,t=this,i,l=t.length;',\r
40                                         'if(0<l){',\r
41                                                 'for(i=0;i<l;++i)if(i===l-1)return f.apply(t[i],a)else f.apply(t[i],a);',\r
42                                         '}',\r
43                                         'return f.apply(t,a)',\r
44                                 '}'                     \r
45                         ].join( '' ));\r
46                         multi.f = src[ p ];\r
47                 };\r
48         };\r
49 })();\r