Немного прочитал про него, но хорошо всю суть не понял, пишут - декоратор может изменять поведение объекта на лету, значит если мы определили функцию конструктор Circle c одним методом draw, то после создание объекта у нас будет только один метод, но если нам еще например понадобится поведение от объекта clear - очищать нарисованное, причем что при создании объекта в ФК не был определен метод clear, то в этой ситуации будет хорошо применить декоратор? JS позволяет изменить прототип ФК и сразу же все уже созданные объекты получат изменения, для чего декоратор если можно изменить ФК.
function Circle() {}
Circle.prototype.draw = function () { return 'drawing' }
var circle1 = new Circle();
circle1.draw() // "drawing"
circle1.clear() // is not a function
Circle.prototype.clear = function () { return 'clearing' }
circle1.clear() // "clearing"
выше изменяется поведение объекта уже после создания самого объекта, эту проблему решает декоратор? если нет, то можете рассказать для чего он нужен, и простенький пример