If kind of a property descriptor gets passed to [Trait.create] it immediately generates a function that always should be called with one of its native caller methods [call] or [apply].

... thus because of ...

JavaScript natively supports/enables [Function] based [Trait] and [Mixin] patterns
for object aggregation/composition. Both patterns are containers for a single or
a whole bunch of implemented method(s) that is/are supposed to get applied to
and run on objects.

concluding remark

In my opinion [Trait]s in JavaScript are considered to be "stateless".
If it comes to state that needs to be carried throughout an object such
implementations should be referred to as [Mixin]s.
If kind of a property descriptor gets passed to [Trait.create] it immediately generates a function that always should be called with one of its native caller methods [call] or [apply].

... thus because of ...

JavaScript natively supports/enables [Function] based [Trait] and [Mixin] patterns
for object aggregation/composition. Both patterns are containers for a single or
a whole bunch of implemented method(s) that is/are supposed to get applied to
and run on objects.

concluding remark

In my opinion [Trait]s in JavaScript are considered to be "stateless".
If it comes to state that needs to be carried throughout an object such
implementations should be referred to as [Mixin]s.
Merge branch 'master' of github.com:petsel/javascript-api-extensions