Node_JS:
В встроенном модуле util есть функция inherits.
Я знаю, что такое super в js, но что такое super_?
exports.inherits = function(ctor, superCtor){
ctor.super_ = superCtor
ctor.prototype = Object.create(superCtor.prototype, {
constructor: {
value:ctor,
enumerable:false,
writable:true,
configurable:true
}
});
};
Подчёркивание в начале свойства – общепринятый знак, что свойство является внутренним, предназначенным лишь для доступа из самого объекта и его наследников. Такие свойства называют защищёнными.
Источник: Защищённые свойства
В вашем случаи подчеркивание в конце свойства, скорее всего соглашения по наименованию команды, которая писала модуль.
В JavaScript существует множество разных способов наследования, классового и прототипного, фабричного и через примеси, прямого и непрямого, а так же гибриды нескольких методов. Но у Node.js есть его родной способ с применением util.inherits(ChildClass, ParentClass).
Источник: Краткая заметка про наследование в Node.js
Как я понял метод inherits, это имитация метода Object.create (Это мое сугубое предположение, ибо я не знаю как реализован метод inherits), а в свойство ctor.super_ (ctor - ChildClass) присваивается функция-конструктор, или объект. Это сделано для того, что бы иметь доступ к методам этой функции, или объекта для дальнейшего использования.
Пример:
'use strict';
let animal = {
walk() {
return "I'm walking";
}
};
let rabbit = {
__proto__: animal,
walk() {
console.log(this.walk);
console.log(super.walk()); // I'm walking
}
};
rabbit.walk();
Тут есть два метода walk. Допустим надо вызвать метод walk, который унаследован от animal, но так как у нас есть свой родной метод, мы этого сделать не можем, разве что так: rabbit.__proto__.walk();. Вот тут и приходит на выручку оператор super.
Ключевое слово super используется для вызова функций, принадлежащих
родителю объекта.
Описание
В конструкторе ключевое слово super используется как функция,
вызывающая родительский конструктор. Её необходимо вызвать до первого
обращения к ключевому слову this в теле конструктора. Ключевое слово
super также может быть использовано для вызова функций родительского
объекта.
Источник: super
Если резюмировать: _ - это общепринятый знак для свойств, которые являются внутренними. Они предназначенным лишь для доступа из самого объекта и его наследников, а свойство super_ - это имитация оператора super из js.
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости