You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by mg...@apache.org on 2013/02/19 17:03:04 UTC

git commit: WICKET-5026 wicket-event.js defined Function.prototype.bind doesn't support prepended arguments

Updated Branches:
  refs/heads/wicket-1.5.x e9375d2cd -> df78e455f


WICKET-5026 wicket-event.js defined Function.prototype.bind doesn't support prepended arguments


Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/df78e455
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/df78e455
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/df78e455

Branch: refs/heads/wicket-1.5.x
Commit: df78e455ff5449394511a2db88b759586bf5fc8d
Parents: e9375d2
Author: Martin Tzvetanov Grigorov <mg...@apache.org>
Authored: Tue Feb 19 18:01:49 2013 +0200
Committer: Martin Tzvetanov Grigorov <mg...@apache.org>
Committed: Tue Feb 19 18:01:49 2013 +0200

----------------------------------------------------------------------
 .../org/apache/wicket/markup/html/wicket-event.js  |   28 +++++++++++---
 1 files changed, 22 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/df78e455/wicket-core/src/main/java/org/apache/wicket/markup/html/wicket-event.js
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/markup/html/wicket-event.js b/wicket-core/src/main/java/org/apache/wicket/markup/html/wicket-event.js
index 688e74f..aad8d4f 100644
--- a/wicket-core/src/main/java/org/apache/wicket/markup/html/wicket-event.js
+++ b/wicket-core/src/main/java/org/apache/wicket/markup/html/wicket-event.js
@@ -22,13 +22,29 @@
  * @author Matej Knopp 
  */
 
-if (Function.prototype.bind == null) {
-	Function.prototype.bind = function(object) {
-		var __method = this;
-		return function() {
-			return __method.apply(object, arguments);
+if (!Function.prototype.bind) {
+	// taken from https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Function/bind
+	Function.prototype.bind = function (oThis) {
+		if (typeof this !== "function") {
+			// closest thing possible to the ECMAScript 5 internal IsCallable function
+			throw new TypeError("Function.prototype.bind - what is trying to be bound is not callable");
 		}
-	}
+
+		var aArgs = Array.prototype.slice.call(arguments, 1),
+			fToBind = this,
+			fNOP = function () {},
+			fBound = function () {
+				return fToBind.apply(this instanceof fNOP && oThis
+					? this
+					: oThis,
+					aArgs.concat(Array.prototype.slice.call(arguments)));
+			};
+
+		fNOP.prototype = this.prototype;
+		fBound.prototype = new fNOP();
+
+		return fBound;
+	};
 }
 
 // Wicket Namespace