Почему не наследует свойство конструктора? Есть конструктор:function Manipulate (){
this.btn = 1 ;
this.ul = 2;
};
Есть метод:Manipulate.prototype.test = () => this.btn +this.ul;
Есть наследование:const add = Object.create(Manipulate);
Почему проверка говорит что add не наследует метод test?console.log(add.hasOwnProperty('test')); //false

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

Основная проблема здесь заключается в том, что вы используете стрелочную функцию при определении метода test в прототипе объекта Manipulate.

Стрелочные функции имеют другой контекст выполнения (this) по сравнению с обычными функциями. В данном случае, внутри стрелочной функции this указывает на глобальный объект, а не на экземпляр объекта Manipulate.

Для того, чтобы исправить эту проблему, замените стрелочную функцию на обычную функцию при определении метода test:

Manipulate.prototype.test = function() {
return this.btn + this.ul;
};

После этого, ваше наследование должно корректно работать:

const add = Object.create(Manipulate);
console.log(add.hasOwnProperty('test')); // true

Теперь add будет наследовать метод test из прототипа объекта Manipulate.

20 Апр 2024 в 13:08
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир