On Oct 29, 2011, at 5:01 PM, Axel Rauschmayer wrote:
>> Personally I'd ask whether there is a good reason to have "class" properties
>> on the constructor.
>
> I’m not too fond of them, either. Many current use cases go away with
> modules. However, sometimes, you want to define class-specific constants such
> as Point.ZERO.
>
"class methods" are often used for purposes such as defining secondary factory
methods or performing management functions spanning all instances of the class.
It's true that dynamic prototype languages such as self seem to get by fine
with only instance methods but they do this by placing behaviors that are not
specific to single instances (constant access, factories, etc) on the
instances. Class based languages with first-class classes have somewhere else
to place such non-instance specific behavior, as methods of the class object.
In particular, since "first-class" classes means that classes themselves
manifest as objects, they inherently may have methods.
As a prototype inheritance language JavaScript could have followed self-style
conventions, but it didn't. In trying to be "Java-like" its core library was
organized in a more class like manner including the use of "class methods".
In all languages I have observed, the class methods are used sparingly. A
typical class with have one constructor, perhaps several dozen instance
methods, and only one or two class methods (many classes have none). Since
there are so many fewer class methods than instance methods, it seems
acceptable for it to be slightly less convenient to define them then it is to
define instance methods.
Allen
_______________________________________________
es-discuss mailing list
es-discuss@mozilla.org
https://mail.mozilla.org/listinfo/es-discuss