fix(injector) .instantiate([Type]) produced wrong result

This commit is contained in:
Misko Hevery 2012-02-16 14:32:52 -08:00
parent 776739299b
commit eb92735c9e
2 changed files with 10 additions and 1 deletions

View file

@ -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);

View file

@ -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() {