Как и зачем использовать SUPER в коде? - PullRequest
2 голосов
/ 07 января 2012

Я работаю с некоторыми продвинутыми людьми из JavaScript, и они использовали ключевое слово SUPER в своем коде. Признаюсь, я не очень хорошо понимаю, как и почему можно и нужно это использовать.

Может ли кто-нибудь направить меня или показать, как стать хорошо сведущим в его использовании и аргументации?

Вот несколько примеров:

openup: function( $super ) {
    $super();
    this.shop.enable_access();
}



addLeft: function( data ) {
    var cell = Element('td');
    if ( data.item_data ) {
        var item = new SRIL(data.item_data);
        item.attach(cell);
        item.show();
    }

    return cell;

}

var SRIL = Class.create(Module, {
initialize: function( $super, data ) {
    $super({ dom: 'show_line' });
    this.data = data;
    if ( data.Type[0] == 'Car' ) {
        //some code
    }
    else {
        // some code
    }
}

}); * +1011 *

Ответы [ 2 ]

2 голосов
/ 07 января 2012

JavaScript не имеет такой вещи.

Обновление: вы должны взглянуть на документацию библиотеки, которая используется здесь.Это библиотечная функция, а не языковая.

1 голос
/ 07 января 2012

Поскольку Javascript не имеет классического наследования, структурированного вместо этого в соответствии с прототипом / функциональной моделью, разработчики предпринимали различные попытки воссоздать классическую модель. super является частью одной из таких стратегий. Конкретная проблема, которую он решает, связана с дочерним объектом, который имеет тот же метод - даже если это просто конструктор - как родительский объект. Без создания super в качестве псевдонима для родительских методов доступ к таким методам становится несколько громоздким (а в некоторых случаях невозможным).

У Джона Ресига есть оболочка , которая достаточно хорошо это демонстрирует. Обратите внимание, что он использовал _super () в первом примере для вызова метода танца родительского объекта.

...