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
.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
При клике на кнопку нужно проскролить к блоку top-bar и только после этого запустить остальную часть скриптаКак отследить это событие?
Возможно ли сделать объект такого вида? Выводится ошибка, что нельзя использовать квадратные скобки в ключах:
У меня есть элемент в ячейке таблицы, у него в стиле указано width: 100%; height: 100%, я вытаскиваю элемент из таблицы и перемещаю его в bodyПосле этого...
When I am logged in and go to the login I shortly see the login form and then the normal dashboardThe login form should not be visible at all for logged in users when they visit the main page