OSDN Git Service

Version 0.6.12.
[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, xhn;\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                 xhn = new X.Dom.Node( args[ i ] );\r
17                 if( xhn.type !== 0 && indexOf.call( this, xhn ) === -1 ){\r
18                         this[ this.length ] = xhn;\r
19                         ++this.length;\r
20                 };\r
21         };\r
22 };\r
23 X.Dom.NodeList.prototype.length = 0;\r
24 \r
25 /* --------------------------------------\r
26  *  Fuction Base, multi, getter, setter,\r
27  */\r
28 (function(){\r
29         var target = X.Dom.NodeList.prototype,\r
30                 src    = X.Dom.Node.prototype,\r
31                 p, v, multi;\r
32 \r
33         for( p in src ){\r
34                 v = src[ p ];\r
35                 if( typeof v === 'funciton' && !target[ p ] ){\r
36                         target[ p ] = multi = new Function( [\r
37                                 'function functionBase(){',\r
38                                         'var a=arguments,s=a.callee,f=s.f,t=this,i,l=t.length;',\r
39                                         'if(0<l){',\r
40                                                 'for(i=0;i<l;++i)if(i===l-1)return f.apply(t[i],a)else f.apply(t[i],a);',\r
41                                         '}',\r
42                                         'return f.apply(t,a)',\r
43                                 '}'                     \r
44                         ].join( '' ));\r
45                         multi.f = src[ p ];\r
46                 };\r
47         };\r
48 })();\r