While Postgres did introduce skip scan in 18, it only works for equality matching: https://www.crunchydata.com/blog/get-excited-about-postgres-...
67 karma · joined December 8, 2010
If at call time it is being called on an object, it will have the value of that object. Otherwise it will have the value of window.
var obj = { f: function () { return this; } };
// returns the object
obj.f()
// returns window
var f = obj.f;
f();
What is happening here is that the setTimeout() calls the lambda at some later point, and it's no longer in the context of the object.An alternate fix for the issue would be:
var obj = (function () {
var that = {};
that.doSomethingLater = function () {
setTimeout(function () { console.log(that); }, 1000);
};
return that;
})();
obj.doSomethingLater();
An article on the subject (that also talks about call and apply): http://www.robertsosinski.com/2009/04/28/binding-scope-in-ja...But you are right, many of the other popular projects did not make this effort.
Except using named functions will also make your stack traces useful. Because function names tell you more than line numbers.