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

Reply via email to