Для наследования массива с использованием прототипов в JavaScript, вы можете использовать следующий метод:
```javascript
function MyArray() {
// Вызываем конструктор Array в контексте нового объекта
Array.apply(this, arguments);
}
// Наследование прототипа Array
MyArray.prototype = Object.create(Array.prototype);
MyArray.prototype.constructor = MyArray;
// Теперь мы можем добавить собственные методы
MyArray.prototype.first = function() {
return this[0];
};
var arr = new MyArray(1, 2, 3);
console.log(arr.first()); // 1
```
Однако, стоит отметить, что прямое наследование от Array может привести к неожиданным проблемам, поскольку встроенные методы массивов, такие как `push`, `pop`, и другие, могут не работать должным образом с подобными подклассами. Современный JavaScript использует классы и конструкцию `extends` для создания подклассов от `Array` и других встроенных типов данных.
Пример с использованием классов ES6:
```javascript
class MyArray extends Array {
first() {
return this[0];
}
}
const arr = new MyArray(1, 2, 3);
console.log(arr.first()); // 1
```
Теперь, в отношении второй части вопроса про `RevercedArray`: данный пример класса или функции конструктора не предоставлен, но чтобы понять проблему, допустим есть следующий класс `RevercedArray`:
```javascript
class RevercedArray extends Array {
constructor(...args) {
super(...args);
}
// Переопределение какого-то метода
reverse() {
return super.reverse(); // Этот метод вызывает родительский метод reverse
}
}
const reversed = new RevercedArray(1, 2, 3);
console.log(reversed); // RevercedArray [1, 2, 3]
console.log(reversed.reverse()); // RevercedArray [3, 2, 1]
```
Здесь обратите внимание, что при работе с расширением массивов, `push`, `pop`, и другие встроенные методы должны работать корректно, если используется синтаксис классов и `extends`.
Если вы столкнулись с проблемой, что при создании экземпляра класса `RevercedArray` результат не соответствует ожиданиям, возможно, проблема заключается в других местах вашего кода, которые вы не предоставили. Проверьте правильность реализации методов и убедитесь, что конструктор не изменяет поведение без необходимости.