Простите, а что вы подразумеваете под абстракцией в js?
Есть, например, абстрактные классы. Об этом можно почитать в книгах про паттерны. Абстрактные классы, да не буду заброшен я помидорами за неточность, это классы, методы которых могут быть не описаны.
class Animal {
constructor({name, age}) {
if (this.constructor.name === 'Animal') {
throw new Error(`${this.constructor.name}: can not create instance of abstract class`);
}
this.name = name;
this.age = age;
}
name() {
return this.name;
}
age() {
return this.age;
}
/*
* Абстрактный метод
*/
talk() {}
}
class Dog extends Animal {
talk() {
console.log('Bark!')
}
}
const animal = new Animal({
name: 'Jack',
age: 5
}); // выбросит ошибку
const dog = new Dog({
name: 'Jack',
age: 5
});
dog.talk(); // Bark!
Есть интерфейсы - полностью абстрактная штука, которая описывает поведение сущности, а уже конкретная реализация интерфейса должна отвечать требованиям, указанным в интерфейсе.
Мне кажется, что вы задали не очень корректный вопрос, или сами не понимаете, что хотели вообще спросить.