Почему в методе "get" не потерялся (не изменился на функцию ссылающуюся на [Container].get) контекст на this?
То есть, this.classes[name] - возвращает элемент объекта classes "класса" Container
Почему в методе "get": this - Container, this.classes - Object, а не this - анонимная ф-я (this.get), this.classes - undefined ?
Почитайте когда меняется this. В данном случае у вас создастся контекст когда вы выполните: obj = new Container();
Так как this.get является методом и принадлежит Container - он наследует его контекст (в методе this это родительский объект).
Получается, что для вас было бы логично, что бы методы класса не имели доступа к другим методам того же класса?
Конструкция подобного рода имеет место быть во многих объектно ориентированных языках.
Вы поместили classes и get в один объект через this (например выполнив: obj = new Container(); или obj = {}; Container.call(obj);)
Когда вы будете вызывать ф-ию таким образом: obj.get(), этот obj будет передан в ф-ию как this в котором лежат classes и get (потому что вы вызываете get как бы из obj).
Так же вы можете подменить (this) если вызовете метод через call/apply: obj.get.call({}, 'simple'), в таком случае вы получите "this.classes - undefined".