Я хотел бы создать абстрактный класс в javascript, который реализует определенные методы, вызывает абстрактные и позволяет «унаследованным» классам реализовать эти абстрактные. Я много читал о прототипах js. Каждая предлагаемая реализация абстрактных классов и методов в javascript представляется простым наследованием, но не реальной абстракцией. Вот очень простой пример, чтобы показать, что я хочу добиться:Реальный абстрактный метод в javascript
var abstractClass = {
abstractMethod: function() { /* i don't know yet what i'm going to do */ },
concreteMethod: function() {
abstractClass.abstractMethod();
}
}
specializedClass = Object.create(abstractClass);
specializedClass.abstractMethod = function() {
alert('Now i know what to do');
}
specializedClass.concreteMethod();
Мой вопрос: есть ли не-Hacky, не обходной путь, чтобы сделать абстрактные классы в JavaScript?
Это экземпляры, а не классы. – SLaks
Я бы не пытался превратить JavaScript в классический язык. На самом деле нет такой вещи, как класс в js, хотя у нас есть ключевое слово class в ES6/2015, это всего лишь синтаксический сахар. Проверьте это: https://medium.com/javascript-scene/the-heart-soul-of-prototypal-oo-concatenative-inheritance-a3b64cb27819#.fg58xcejw – Rupert
Я действительно не хочу строить наследование классов, я просто хотите сделать какой-то тайм-сервис, который обрабатывает интервал start/stop, а пользовательские классы просто должны реализовать действие по тикам – kexx