1
0
Fork 0

[Fix #37] constructor property now properly set on instances

perfodd
Mike Gerwitz 2012-01-19 23:21:04 -05:00
parent 9dbd0d1fb3
commit fa9dbcbf2e
2 changed files with 23 additions and 5 deletions

View File

@ -388,11 +388,11 @@ exports.prototype.build = function extend( _, __ )
prototype, prop_init, members, new_class, this._classId prototype, prop_init, members, new_class, this._classId
); );
new_class.prototype = prototype; new_class.prototype = prototype;
new_class.constructor = new_class; new_class.prototype.constructor = new_class;
new_class.___$$props$$ = prop_init; new_class.___$$props$$ = prop_init;
new_class.___$$methods$$ = members; new_class.___$$methods$$ = members;
new_class.___$$sinit$$ = staticInit; new_class.___$$sinit$$ = staticInit;
attachFlags( new_class, props ); attachFlags( new_class, props );
@ -692,6 +692,7 @@ exports.prototype.createConcreteCtor = function( cname, members )
) )
; ;
} }
}; };
// provide a more intuitive string representation // provide a more intuitive string representation

View File

@ -167,3 +167,20 @@ assert.ok(
}, TypeError, "Constructor cannot be private" ); }, TypeError, "Constructor cannot be private" );
} )(); } )();
/**
* When a constructor is instantiated, the instance's 'constructor' property is
* set to the constructor that was used to instantiate it. The same should be
* true for class instances.
*
* This will also be important for reflection.
*/
( function testConsructorPropertyIsProperlySetToClass()
{
var Foo = Class( {} );
assert.ok( Foo().constructor === Foo,
"Instance constructor should be set to class"
);
} )();