<div>I have always been suspicious of static method inheritance. Smalltalk-76 did not have it. Smalltalk-80 did. Although I only ever had hands on with Smalltalk-80, I always felt that Smalltalk-76 had this one right. I know other smalltalkers disagree.</div>
<div><br></div>I think in a de-novo language like Dart or Smalltalk at the time, they are at least plausible. So I find it interesting that Dart chose to avoid them. For JS, I think they are disastrous because of "this" confusions. Normally, when a JS method is "static", what we implicitly mean is that it is to be found on a constructor function, and that the method does not depend on its this-binding. For static method inheritance to make sense, many static methods would instead be written to be this-sensitive. This will cause common usage patterns to break.<div>
<br></div><div>For JS, because of its this-binding rules and the programming patterns that have adapted to these rules, I believe it is too late for static inheritance. But even if it weren't, I suspect it's a bad idea anyway.<br>
<div><br><br><div class="gmail_quote">On Tue, Mar 20, 2012 at 10:24 PM, Kevin Smith <span dir="ltr"><<a href="mailto:khs4473@gmail.com">khs4473@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div class="gmail_quote"><div class="im"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word"><div>We can live quite nicely with treating class declaration like const declarations.  The name is logically hoisted so it is visible over the lexical scope, but the name is temporally dead until the class declaration is executed, in statement sequence, as an initializer.  </div>

</div></blockquote><div><br></div></div><div>This looks good to me.</div><div class="im"><div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word">
<div>
Personally I think the answer should be "A" which implies that we have class-side inheritance.</div></div></blockquote><div><br></div></div><div>I'm still trying to form an opinion on this.  Dart has no static method inheritance.  In the spec, there's the following commentary:</div>

<div><div><br></div></div></div><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div class="gmail_quote"><div><div><i>Inheritance of static methods has little utility in Dart. Static methods cannot</i></div>

</div></div><div class="gmail_quote"><div><div><i>be overridden. Any required static function can be obtained from its declaring</i></div></div></div><div class="gmail_quote"><div><div><i>library, and there is no need to bring it into scope via inheritance. Experience</i></div>

</div></div><div class="gmail_quote"><div><div><i>shows that developers are confused by the idea of inherited methods that are not</i></div></div></div><div class="gmail_quote"><div><div><i>instance methods</i></div></div>

</div></blockquote><div class="gmail_quote"><div> </div><div>I'd be interested to hear other viewpoints on the matter.</div><span class="HOEnZb"><font color="#888888"><div><br></div><div>kevin</div></font></span></div>

<br>_______________________________________________<br>
es-discuss mailing list<br>
<a href="mailto:es-discuss@mozilla.org">es-discuss@mozilla.org</a><br>
<a href="https://mail.mozilla.org/listinfo/es-discuss" target="_blank">https://mail.mozilla.org/listinfo/es-discuss</a><br>
<br></blockquote></div><br><br clear="all"><div><br></div>-- <br>    Cheers,<br>    --MarkM<br>
</div></div>