Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   ES6: Как сделать фабрику методов для класса? (https://javascript.ru/forum/misc/70000-es6-kak-sdelat-fabriku-metodov-dlya-klassa.html)

Alexandroppolus 11.08.2017 18:02

Да.

Alexandroppolus 11.08.2017 18:09

Цитата:

Сообщение от Shitbox2
Ну и
newConstructor.prototype = Object.create(Target.prototype);
newConstructor.prototype.constructor = Target;

так ли нужны?

тут правильнее всего так:
newConstructor.prototype = Object.create(Target.prototype);
newConstructor.prototype.constructor = newConstructor;
быть может, это и подразумевалось, только автор опечатался

Shitbox2 11.08.2017 18:20

Всё равно декоратор не работает нормально. Если делаю так, то всё ОК
function decorator(target) {
  return target
}

@decorator
class MyClass {
  public constructor( @Inject(HttpClient) protected http: HttpClient) {}
}


Но как только вместо target возвращаю в декораторе новый конструктор, DI перестает работать (сервисы не инжектятся) :(

P.S. Сделал планк https://embed.plnkr.co/opnY3y/

Shitbox2 13.08.2017 17:28

Читал документацию по декораторам и смотрел как они в ES транспилятся - ничего сложного)

На stackoverflow ответили: https://stackoverflow.com/questions/...46606#45646606

Тоже пробовал что-то подобное, но оказывается нужно было newCtor делать именованной, а в конце все-таки использовать newConstructor.prototype = Object.create(target.prototype), а не newConstructor.prototype = target.prototype;

Видимо, Ангуляр как-то по-особенному свои зависимости инжектит. Вот в его исходниках так и не разобрался - слишком муторный код


Часовой пояс GMT +3, время: 20:31.