diff options
| -rw-r--r-- | src/Injector.js | 2 | ||||
| -rw-r--r-- | test/InjectorSpec.js | 9 |
2 files changed, 10 insertions, 1 deletions
diff --git a/src/Injector.js b/src/Injector.js index f5e35d0f..c1b9e69c 100644 --- a/src/Injector.js +++ b/src/Injector.js @@ -433,7 +433,7 @@ function createInjector(modulesToLoad) { var Constructor = function() {}, instance, returnedValue; - Constructor.prototype = Type.prototype; + Constructor.prototype = (isArray(Type) ? Type[Type.length - 1] : Type).prototype; instance = new Constructor(); returnedValue = invoke(Type, instance, locals); diff --git a/test/InjectorSpec.js b/test/InjectorSpec.js index dea76a6b..df326580 100644 --- a/test/InjectorSpec.js +++ b/test/InjectorSpec.js @@ -605,6 +605,15 @@ describe('injector', function() { }); + it('should instantiate object and preserve constructor property and be instanceof', function() { + var t = $injector.instantiate(['book', 'author', Type]); + expect(t.book).toEqual('moby'); + expect(t.author).toEqual('melville'); + expect(t.title()).toEqual('melville: moby'); + expect(t instanceof Type).toBe(true); + }); + + it('should allow constructor to return different object', function() { var obj = {}; var Class = function() { |
