player[playing ? "play" : "pause"]()
(a not-so-weird JS pattern) would be the same as: (playing ? player.play : player.pause)() player[playing ? "play" : "pause"]()
(a not-so-weird JS pattern) would be the same as: (playing ? player.play : player.pause)() o.f()
Can be decomposed in Python: func = o.f
func()
JavaScript fails this test, and it's a shame. NodeList.prototype.map = Array.prototype.map
Just one line and now you can do stuff like: document.querySelectorAll("div").map(function(ele){
return ele.id
});I don't know if it's really that bad that JS returns the unbound function when doing `obj.someFunc`, as it is consistent with any other property access: it returns the same thing that was assigned to that key in the object, or at some point in its prototype chain.
The really broken behavior, at least for me, is that when doing `var f = obj.someFunc(); f()`, the "this" gets bound to "window" in the f() call, instead of being null, or better yet raising an error whenever referenced, like an undefined variable.
I think most people would write it like this:
playing ? player.play() : player.pause()Not sure if i understand the question. This seems to work in Python:
s = "Hello"
up = True
(s.upper if up else s.lower)()
Not that it's a very pythonic piece of code, but it works, and i would expect many other languages support something similar.Anyway, that's tangential. And i wasn't discussion what "most people would" do either. What i was trying to say is that by aliasing "var self = this" you're not automatically immune to the quirks of "this" in JS.