Цитата:
на каждый экземпляр - новый метод. При том что тут не нужны данные из экземпляра. если экземпляров много, таки лучше через прототип. Конечно, выглядит совсем не по-хипстерски, зато правильнее :) |
Учитывая, что это всё используется в Ангуляре (кто-то использует TS по-другому? ;-), а сервисы там преимущественно синглтоны, то копировать свойства в конструкторе нормально... Не понимаю, зачем ангуляровцы, вообще, ООП используют при таком раскладе
|
Что происходит, когда мы возвращаем значение из конструктора?
var f : any = function (...args) {
console.log("New: " + original.name);
return new original(...args);
}
В документации по ES6/TypeScript таких примеров нет |
Цитата:
|
А где об этом можно почитать? Это поведение ES6 или TypeScript добавляет?
|
Цитата:
https://developer.mozilla.org/ru/doc.../Operators/new это стандартное js-ное поведение, существует от сотворения мира. |
И как это я упустил этот момент) Спасибо!
|
Еще вопрос, чтобы новую тему не создавать. Пример из статьи: https://www.sitepen.com/blog/2015/10...pt-decorators/
Реализация декоратора @readonly
function readonly<TFunction extends Function>(Target: TFunction): TFunction {
let newConstructor = function () {
Target.apply(this);
Object.freeze(this);
};
newConstructor.prototype = Object.create(Target.prototype);
newConstructor.prototype.constructor = Target;
return <any> newConstructor;
}
Зачем здесь делают Target.apply(this);? По-моему, это просто вызовет конструктор без аргументов. Смысл? Ну и newConstructor.prototype = Object.create(Target.prototype); newConstructor.prototype.constructor = Target; так ли нужны? |
Цитата:
Target.apply(this, arguments); По сути, тут создается новый класс, который в точности как Target, только объекты после создания замораживаются. Потому конструктор вызывать надо. Цитата:
newConstructor.prototype = Target.prototype; |
Цитата:
|
| Часовой пояс GMT +3, время: 04:08. |