X-Git-Url: http://git.osdn.jp/view?a=blobdiff_plain;f=0.6.x%2Fjs%2F01_core%2F00_builtin.js;h=8a8f07301f8cddaa1bc6921904e67730201282c6;hb=136b808d09fef278c92b1c1c2cecf67f1383314d;hp=ba646f842127545bb5e0aeb7fae8c99d1d1aa3f9;hpb=627c568dd07a80b20a97ac6e47de3b12a9796c32;p=pettanr%2FclientJs.git diff --git a/0.6.x/js/01_core/00_builtin.js b/0.6.x/js/01_core/00_builtin.js index ba646f8..8a8f073 100644 --- a/0.6.x/js/01_core/00_builtin.js +++ b/0.6.x/js/01_core/00_builtin.js @@ -10,34 +10,36 @@ */ Function.prototype.apply || (Function.prototype.apply = function (x, y) { - var a, i, r, j; + var apply = '__apply', + a, i, r, j; + x = x || window; y = y || []; // apply 内で apply を呼んだ場合に備える if( x === window ){ - x.__apply = void 0; + x[ apply ] = void 0; } else { - if( x.constructor && x.constructor.prototype.__apply ){ - delete x.constructor.prototype.__apply; + if( x.constructor && x.constructor.prototype[ apply ] ){ + delete x.constructor.prototype[ apply ]; } else - if( x.__apply ) delete x.__apply; + if( x[ apply ] ) delete x[ apply ]; }; - x.__apply = this; - if (!x.__apply) x.constructor.prototype.__apply = this; + x[ apply ] = this; + if (!x[ apply ]) x.constructor.prototype[ apply ] = this; j = y.length; switch (j) { - case 0: r = x.__apply(); break; - case 1: r = x.__apply(y[0]); break; - case 2: r = x.__apply(y[0], y[1]); break; - case 3: r = x.__apply(y[0], y[1], y[2]); break; - case 4: r = x.__apply(y[0], y[1], y[2], y[3]); break; - case 5: r = x.__apply(y[0], y[1], y[2], y[3], y[4]); break; - case 6: r = x.__apply(y[0], y[1], y[2], y[3], y[4], y[5]); break; - case 7: r = x.__apply(y[0], y[1], y[2], y[3], y[4], y[5], y[6]); break; - case 8: r = x.__apply(y[0], y[1], y[2], y[3], y[4], y[5], y[6], y[7]); break; - case 9: r = x.__apply(y[0], y[1], y[2], y[3], y[4], y[5], y[6], y[7], y[8]); break; + case 0: r = x[ apply ](); break; + case 1: r = x[ apply ](y[0]); break; + case 2: r = x[ apply ](y[0], y[1]); break; + case 3: r = x[ apply ](y[0], y[1], y[2]); break; + case 4: r = x[ apply ](y[0], y[1], y[2], y[3]); break; + case 5: r = x[ apply ](y[0], y[1], y[2], y[3], y[4]); break; + case 6: r = x[ apply ](y[0], y[1], y[2], y[3], y[4], y[5]); break; + case 7: r = x[ apply ](y[0], y[1], y[2], y[3], y[4], y[5], y[6]); break; + case 8: r = x[ apply ](y[0], y[1], y[2], y[3], y[4], y[5], y[6], y[7]); break; + case 9: r = x[ apply ](y[0], y[1], y[2], y[3], y[4], y[5], y[6], y[7], y[8]); break; default: a = []; for (i = 0; i < j; ++i) @@ -49,13 +51,13 @@ Function.prototype.apply || (Function.prototype.apply = function (x, y) { }; // ie5 if( x === window ){ - x.__apply = void 0; + x[ apply ] = void 0; } else { //alert( typeof x ); - if( x.constructor && x.constructor.prototype.__apply ){ - delete x.constructor.prototype.__apply; + if( x.constructor && x.constructor.prototype[ apply ] ){ + delete x.constructor.prototype[ apply ]; } else - if( x.__apply ) delete x.__apply; + if( x[ apply ] ) delete x[ apply ]; }; return r; });