Express Function

Alex R. Young





programming tricks

Express Function

Posted by Alex R. Young on .

programming tricks

Express Function

Posted by Alex R. Young on .

In express yourself: rapid function
Angus Croll discusses a function that uses apply and
eval to generate functions from concise string definitions:

Function.prototype.express = function(expr) {
    var __method = this;
    return function() {
        var r = __method.apply(this, arguments);
        return eval(expr);

String.prototype.indexAfter = String.prototype.indexOf.express('r + 1');

It's a little bit like the string lambda functions in the
functional-javascript library.

Tricks like this demonstrate JavaScript's functional legacy. And, if the
eval seems a bit cheap to you, try combining the technique
with the author's previous article, Compose: functions as building

If you've been following our framework series, you've probably noticed
that jQuery, Prototype, Underscore and other libraries all define simple
functional methods early in the framework for internal use. JavaScript
1.8 makes even more techniques possible, like simplified array

Number.prototype.__iterator__ = function(){ for (let i = 0; i < this; i++) yield i }
var s = [2 * i for (i in 100) if (i * i > 3)]

And expression closures:

// JavaScript 1.7
function(x) { return x * x; }

// JavaScript 1.8
function(x) x * x