From 6188c38053f3d349692fcbc0c2dc900957e60955 Mon Sep 17 00:00:00 2001 From: John-David Dalton Date: Mon, 3 Dec 2012 22:07:45 -0800 Subject: [PATCH] Move `bound` inheritance hookup inside `bound`. Former-commit-id: 7f95fffa14ef42f8f065aad124ac883740baac64 --- lodash.js | 15 +++++++-------- test/test.js | 8 -------- 2 files changed, 7 insertions(+), 16 deletions(-) diff --git a/lodash.js b/lodash.js index 35dacd840..ca531b605 100644 --- a/lodash.js +++ b/lodash.js @@ -587,19 +587,18 @@ : partialArgs; } if (this instanceof bound) { + // ensure `new bound` is an instance of `bound` and `func` + noop.prototype = func.prototype; + thisBinding = new noop; + noop.prototype = null; + // mimic the constructor's `return` behavior // http://es5.github.com/#x13.2.2 - var result = func.apply(this, args); - return isObject(result) ? result : this; + var result = func.apply(thisBinding, args); + return isObject(result) ? result : thisBinding; } return func.apply(thisBinding, args); } - if (func && func.prototype) { - // ensure `new bound` is an instance of `bound` and `func` - noop.prototype = func.prototype; - bound.prototype = new noop; - noop.prototype = null; - } return bound; } diff --git a/test/test.js b/test/test.js index 639ee7a12..f3dfb5d3a 100644 --- a/test/test.js +++ b/test/test.js @@ -209,14 +209,6 @@ bound(['b'], 'c'); deepEqual(args, ['a', ['b'], 'c']); }); - - test('ensure `new bound` is an instance of `bound` and `func`', function() { - var func = function() {}, - bound = _.bind(func, {}), - instance = new bound; - - ok(instance instanceof bound && instance instanceof func); - }); }()); /*--------------------------------------------------------------------------*/