<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -1,3 +1,5 @@
+* Optimize Function#bind and Function#bindAsEventListener to avoid using Array#concat when only the context argument is given. [kangax]
+
 * Ensure Selector.handlers.id finds the proper element even when it's not attached to the document. [jddalton]
 
 * Fix Position.within in IE. [jddalton]</diff>
      <filename>CHANGELOG</filename>
    </modified>
    <modified>
      <diff>@@ -168,16 +168,30 @@ Object.extend(Function.prototype, {
   bind: function() {
     if (arguments.length &lt; 2 &amp;&amp; Object.isUndefined(arguments[0])) return this;
     var __method = this, args = $A(arguments), object = args.shift();
-    return function() {
-      return __method.apply(object, args.concat($A(arguments)));
+    
+    // Avoid using Array#concat when only the context argument is given.
+    if (args.length) {
+      return function() {
+        return __method.apply(object, args.concat($A(arguments)));
+      };
     }
+    return function() {
+      return __method.apply(object, arguments);
+    };
   },
   
   bindAsEventListener: function() {
     var __method = this, args = $A(arguments), object = args.shift();
-    return function(event) {
-      return __method.apply(object, [event || window.event].concat(args));
+
+    // Avoid using Array#concat when only the context argument is given.
+    if (args.length) {
+      return function(event) {
+        return __method.apply(object, [event || window.event].concat(args));
+      };
     }
+    return function(event) {
+      return __method.apply(object, [event || window.event]);
+    };
   },
   
   curry: function() {</diff>
      <filename>src/base.js</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>4b2913c79f9d57e96360294d7a134593a8819c91</id>
    </parent>
  </parents>
  <author>
    <name>Andrew Dupont</name>
    <email>prototype@andrewdupont.net</email>
  </author>
  <url>http://github.com/sstephenson/prototype/commit/76e6f9fa46e45c8131d549621684a3d473ba0653</url>
  <id>76e6f9fa46e45c8131d549621684a3d473ba0653</id>
  <committed-date>2008-07-17T13:18:43-07:00</committed-date>
  <authored-date>2008-07-17T13:18:43-07:00</authored-date>
  <message>Optimize Function#bind and Function#bindAsEventListener to avoid using Array#concat when only the context argument is given. [#215 state:resolved]</message>
  <tree>e2c793823ed144acded77361150832f1bf360d13</tree>
  <committer>
    <name>Andrew Dupont</name>
    <email>prototype@andrewdupont.net</email>
  </committer>
</commit>
