Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

You should look at Lua. Yes, if you want a notion of "self" or "this" with prototypal inheritance, then it must be dynamically bound. However, this does not have to be a burden on, or even be noticeable by, the programmer. Good language design can avoid most of the pitfalls in JavaScript...


To elaborate, Lua has special syntax for defining and calling methods vs unbound functions. In Lua,

    function woot:donk() ... end
    woot:donk()
is equivalent to

    woot.donk = function(self) ... end
    woot.donk(woot)
and when you define a function normally e.g.

    function() ... end
there is no self parameter, thus the one from the parent scope is captured. The flaw with JS, really, is that it forces every function to be a method, and doesn't let you express whether you are defining one or the other.

(think I got this right, my Lua is a bit rusty)


Yep, that's pretty much it. And the woot:donk() notation will only evaluate what's left of the colon once, which is nice.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: