JavaScript: OOP in JS mit Namespace

Im letzten JavaScript Post habe ich die Objektorientierung gestreift. Doch wie werden Objekte in einem Namespace bzw. einem über Objekt zusammengefasst?

Folgender kleiner Snippet soll dieses veranschaulichen. In diesem werden zwei Klassen zusammen gefasst. Auch hier wird wieder gezeigt wie man den Konstruktor oder Methoden der Elternklasse aufruft.

//Namespace
var TEST = TEST || { version: 1 }

//Object 1
TEST.MyObject = function (){
    this.property1 = 1
    console.log('obj1')
    return this
}
//leider kann hier der constructor nicht richtig gesetzt werden
//in der Konsole erscheint beim log immer object als Konstruktorname ;o(
//TEST.MyObject.prototype.constructor = TEST.MyObject
TEST.MyObject.prototype.method1 = function () {
    console.log('method1 called')
    return 'method1'
}

//Object2
TEST.MyObject2 = function(){
    TEST.MyObject.call(this) //call super class constructor
    this.property2 = 2
    console.log('obj2')
    return this
}
//inherit from prototype
TEST.MyObject2.prototype = Object.create(TEST.MyObject.prototype)
//TEST.MyObject2.prototype.constructor = TEST.MyObject2
TEST.MyObject2.prototype.method2 = function(){
    TEST.MyObject.prototype.method1.call(this)
    console.log('method2 called')
}