diff options
| author | Misko Hevery | 2012-02-16 14:32:52 -0800 | 
|---|---|---|
| committer | Misko Hevery | 2012-02-16 14:32:52 -0800 | 
| commit | eb92735c9ea3e5ddc747b66d8e895b6187a5f9e0 (patch) | |
| tree | 15df18ecf434734e10180dc3a922b19ffce0766f | |
| parent | 776739299b698a965ef818eeda75d4eddd10c491 (diff) | |
| download | angular.js-eb92735c9ea3e5ddc747b66d8e895b6187a5f9e0.tar.bz2 | |
fix(injector) .instantiate([Type]) produced wrong result
| -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() { | 
