Javascript. Что происходит в этом куске кода?

303
31 января 2017, 23:19

Первый раз вижу такой код.. не пойму, что тут происходит?

var DemoAppModel = (function (_super) {
    __extends(DemoAppModel, _super);
    function DemoAppModel() {
        _super.call(this);   
    }
    DemoAppModel.prototype.auth = function () {}
    return DemoAppModel; 
})(observable.Observable);
exports.DemoAppModel = DemoAppModel;
exports.mainViewModel = new DemoAppModel();

Где про это можно прочитать?

Answer 1

Это код, сгенерированный компилятором TypeScript. До компиляции он был вот таким:

export class DemoAppModel extends observable.Observable {
  auth() { }
}
export var mainViewModel = new DemoAppModel();

Никакой магии, просто создается класс-наследник другого с одним пустым методом и объект этого класса.

Answer 2

Обычный класс какого-то плагина аля Babel(он преобразовывает синтаксис es5-es6-es7 в код который должен поддерживаться в старых браузерах). Прочитайте про es5 классы. Сразу увидите схожесть реализации. Сначала класс создали, потом сделали наследование, потом вызвали конструктор который наследует все от от родителя. А потом создали новый метод auth.