On 8/17/07, Brendan Eich <[EMAIL PROTECTED]> wrote: > This has come up on this list before; please see the archive: > > https://mail.mozilla.org/private/es4-discuss/2007-January/thread.html > (the "inheriting statics" thread). > I can't access that page, I'm not sure if I even have a pwd, but I found it here: http://www.nabble.com/inheriting-statics-tf3294493.html#a9164269
> Also, what section 9.2.7 do you mean? Could you cite the URL of the > document containing that section? Thanks, > I got the example from the PDF at the bottom of the page here: http://developer.mozilla.org/es4/spec/spec.html "... Unlike in some other object oriented languages (e.g. Java), static properties of the base class are not inherited, but they are in scope in the static and instance methods of the derived class. 9.2.7 Scopes Static properties are in scope of bodies of static and instance methods of the same class. Instance properties are in scope of the bodies of the instance methods. Instance properties shadow static properties with the same name. Static properties of base classes are in scope of static and instance methods of a class. class A { static var ax } class B extends A { static var bx } class C extends B { static var cx var ix function m() { var mx gx = 10 ax = 20 bx = 30 cx = 40 mx = 50 } } var gx o = new C o.m() Scopes: • { mx } - activation scope • { ix } - instance scope • { cx } - static scope C • { bx } - static scope B • { ax } - static scope A • { gx } - global scope 40 Here's what happens when I try it in es4 reference implementation: >> class A {static var ax = 10;} >> class B extends A { static var bx = 20;} >> print( new B().ax ) undefined print( new A().ax) undefined print(A.ax) 10 >> print(B.ax) undefined Is the PDF wrong? Garrett > /be > > On Aug 17, 2007, at 2:05 PM, Garrett Smith wrote: > > > The example in section 9.2.7 demonstrates static members, including > > those of an ancestor superclass, being accessible through an instance. > > > > Section 9.6.2 clearly states that static methods are not accessible > > through derived class objects (though does not mention anything about > > static properties). > > > > Am I to understand that static members (methods and properties) are > > visible through the scope chain of instances of derived classes (as in > > example in 9.2.7)? > > > > 2. Can static methods be abstract? I think that this should be a > > compile-time error (static abstract function). > > > > Garrett > > _______________________________________________ > > Es4-discuss mailing list > > [email protected] > > https://mail.mozilla.org/listinfo/es4-discuss > > -- http://dhtmlkitchen.com/ _______________________________________________ Es4-discuss mailing list [email protected] https://mail.mozilla.org/listinfo/es4-discuss
