Расширяется в javascript

Может кто-нибудь, пожалуйста, помогите мне понять этот код? Кажется слишком запутанным для меня.

var __extends = this.__extends || function (d, b) {
    function __() { this.constructor = d; }
    __.prototype = b.prototype;
    d.prototype = new __();
};


var PageView = (function (_super) {
    "use strict";

    __extends(MyPageView, _super);

 function MyPageView(rootElement, viewModelParameter, calendarWeeksViewModel) {
});


}

Ответы

Ответ 1

Итак, в основном

__extends(MyPageView, _super);

Подумайте в терминах наследования на объектно-ориентированном языке. Если класс расширяет класс Super или базовый класс.

Таким образом, в основном здесь MyPageView расширит функциональность и реализацию суперкласса.

Итак, предположим, что базовый View имеет method A() and method B(), а текущий View имеет метод C(), тогда у вашего текущего представления есть доступ ко всем трем методам A() , B() and C() в нем.

Но пусть MyPageView имеет method B(), определенный в нем, тогда метод внутри представления примет precedence over the Method B() of Super View

var __extends = this.__extends || function (d, b) {
    function __() { this.constructor = d; }
    __.prototype = b.prototype;
    d.prototype = new __();
};

Каждая функция обладает магическим свойством прототипа.

 var __extends = this.__extends || function (d, b) {

Чек, если эта функция доступна в этом контексте, если не определена функция, которая принимает 2 аргумента. Объект, который должен быть расширен, и объект, из которого он расширен.

function __() { this.constructor = d; }

Определение новой функции с именем __, в которой свойство конструктор контекста привязано к object d

 __.prototype = b.prototype;

Свойство прототипа Object __ указывается на цепочку b.prototype..

 d.prototype = new __();

Доступ к методам Super View происходит здесь, где вы задаете свойство прототипа объекта здесь.

Итак, когда новый экземпляр создан, если этот метод недоступен, то из-за prototype на объекте он проверяет методы в Super View, потому что он доступен для функции __, которая привязан к object d