AntonTitovI
@AntonTitovI
Учю web

Почему не наследует свойство конструктора?

Есть конструктор:
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
  • Вопрос задан
  • 289 просмотров
Пригласить эксперта
Ответы на вопрос 4
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
Комментировать
bingo347
@bingo347 Куратор тега JavaScript
Crazy on performance...
Во-первых, Object.create создает объект из прототипа без вызова конструктора, и передавать ему надо прототипconst add = Object.create(Manipulate.prototype);С вызовом конструктора надо писать так:const add = new Manipulate('id1', 'id2');

Во-вторых, Object.prototype.hasOwnProperty проверяет, что данное свойство есть в объекте и оно собственное (не из прототипа), для общей проверки (включая цепочку прототипов) используется оператор inconsole.log('test' in add);

UPD:
Добавлю еще, что стрелочная функция не имеет собственного контекста, this у нее из замыкания, нужна полноценная функция или метод объекта
Ответ написан
Комментировать
LenovoId
@LenovoId
svg, css,js
в скобках id пишется в кавычках вроде бы
Ответ написан
Комментировать
AntonTitovI
@AntonTitovI Автор вопроса
Учю web
Это, да. Кавычки будут в параметре функции add. Вопрос в другом, почему проверка говорит что add не наследует test? Щас отредактирую, чтобы было поабстрактней.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы