Как организовать наследование во встроенных классах JavaScript, чтобы методы вызывались по цепочке вверх? Допустим метод any() определяется для встроенного класса Object и Array через свойство prototype:Object.defineProperty(Object.prototype, "any", {
value: function(){
console.log("object.any");
return this;
} // function
,enumerable :false
});
Array.prototype.any = function(){
console.log("array.any");
return this;
}; // any
[].any();
Однако, при вызове [].any() вызывается метод any() определённый для класса Object. Каким должна быть схема определения методов, чтобы функции вызывались по цепочке вверх в зависимости от наличия в прототипах своих ближайших родителей?

21 Авг 2019 в 07:04
152 +1
0
Ответы
1

Для организации наследования во встроенных классах JavaScript таким образом, чтобы методы вызывались по цепочке вверх, можно воспользоваться механизмом наследования прототипов. В данном случае, если метод any() определяется для класса Array и не определен для класса Object, то при вызове [].any() будет вызываться метод из прототипа Array.

Пример кода, который позволит вызывать методы по цепочке вверх в зависимости от наличия в прототипах своих ближайших родителей:

// Определяем метод any() для класса Object
Object.prototype.any = function(){
console.log("object.any");
return this;
};
// Создаем прототип для класса Array, унаследованный от прототипа Object
Array.prototype = Object.create(Object.prototype);
// Определяем метод any() для класса Array
Array.prototype.any = function(){
console.log("array.any");
return this;
};
[].any(); // В этом случае будет вызван метод из прототипа Array

Таким образом, при вызове метода any() для массива будет вызываться метод из прототипа Array, а если метод не определен для класса Array, то будет вызван метод из прототипа Object.

20 Апр в 13:08
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 84 309 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир