Вы можете прослушивать события на уровне документа.
[...events].forEach(e => {
document.addEventListener(e, (ev) => {
ev.preventDefault()
...
})
})
Но определенно есть запах кода ... Я сомневаюсь, что перехват всех событий - это хорошая идея. Когда-либо.
Оба термина использованы под контекстом Родительского Ребенка (или Наследованы от основы), отношение между двумя классами.
MyBase
назван от дочернего класса. Вы используете это, когда Вы хотите к , относятся к члену родительского класса без неоднозначности . Это полезно, когда дочерний класс имеет участника, для которого имя также используется в родительском классе (обратите внимание, что это означает дочерний элемент или overloads
или shadows
родительский элемент).
MyClass
назван от родительского класса. Вы используете это, когда Вы хотите обратиться к члену того же самого родительского класса, и игнорируют, мог ли родительский элемент быть переопределен дочерним элементом . Это возможно полезно, когда Вы определяете поведение по умолчанию путем меток участника как Overridable
, но все еще хотите использовать то поведение по умолчанию для механизмов в родительском классе.
MyBase
используется, когда виртуальной функции необходимо вызвать версию своего родителя. Например, рассмотрим:
Class Button
Public Overridable Sub Paint()
' Paint button here. '
End Sub
End Class
Class ButtonWithFancyBanner
Inherits Button
Public Overrides Sub Paint()
' First, paint the button. '
MyBase.Paint()
' Now, paint the banner. … '
End Sub
End Class
(Это то же самое, что base
в C #.)
MyClass
вообще редко используется. Он вызывает метод собственного класса, даже если он обычно вызывает виртуальный метод производного класса . Другими словами, он отменяет диспетчеризацию виртуального метода и вместо этого выполняет статический вызов.
Это надуманный пример. Мне сейчас трудно найти реальное применение (хотя оно определенно существует):
Class Base
Public Overridable Sub PrintName()
Console.WriteLine("I’m Base")
End Sub
Public Sub ReallyPrintMyName()
MyClass.PrintName()
End Sub
End Class
Class Derived
Inherits Base
Public Overrides Sub PrintName()
Console.WriteLine("I’m Derived")
End Sub
End Class
' … Usage: '
Dim b As Base = New Derived()
b.PrintName() ' Prints "I’m Derived" '
b.ReallyPrintMyName() ' Prints "I’m Base" '
(В C # этого нет. В IL это вызывает вызов
вместо обычного callvirt
код операции.)
mybase
ссылается на непосредственный базовый класс текущего экземпляра.
myclass
ссылается на текущий экземпляр, но игнорирует любую переопределенную реализацию свойств/методов класса.
В двух словах, общее использование обоих методов - это полиморфизм. Вот хорошая статья, которая объясняет ключевые слова немного подробнее.
Оба используются, когда вам нужно вызвать виртуальный метод, и вам нужно указать, какой именно. MyBase
вызовет метод в базовом классе, MyClass
вызовет метод в текущем классе.
Не думаю, что я использовал MyClass
больше одного или двух раз, но MyBase
я использовал довольно часто, когда переопределял метод, но хотел, чтобы код переопределенного метода также выполнялся.
MyBase
:
http://msdn.microsoft.com/en-us/library/dzfhkk01%28VS.71%29.aspx
MyClass
:
http://msdn.microsoft.com/en-us/library/b3b35kyk%28VS.71%29.aspx
Эти ключевые слова используются в сценариях, связанных с наследованием. MyBase, MyClass часто используются для обозначения некоторых функций или свойств в родительском классе. Если у вас есть класс, производный от другого, эти ключевые слова используются для ссылки на код в контексте родительского класса.