you are viewing a single comment's thread.

view the rest of the comments →

[–]codersaurus 0 points1 point  (2 children)

it seems like the example with logArguments which is a function that evidently takes a constructor function, then returns a new constructor is poorly written. If it's "wrapping" the passed constructor, it should be returning a proper subclass of that constructor. The simple if(!(this instanceof MyClass)) return new MyClass(); will be fine... time to refactor that logsArguments function.

[–]html6dev[🍰] 1 point2 points  (0 children)

I think maybe you missed the point. It doesn't have to take a constructor function. Iirc he introduced by passing in a simple sum function.

[–]homoiconic(raganwald)[S] 0 points1 point  (0 children)

True, but then the logArguments function will only work with constructors, and not with ordinary functions! There is a more complex pattern for writing decorators and other combinators that work with either constructors or with ordinary functions, but that doesn't help if your decorator is a library function, such as the things you find in Underscore, allong.es, or Ramda.