Function that Returns a Function

by sikusikucom

JavaScript

function prop(name) {
    return function(obj) {
        return obj.name;
    };
}

var people = [
    {
        name: 'Bart',
        age: 13,
        getName: function() {
            return this.name;
        }
    },
    {
        name: 'Homer',
        age: 40,
        getName: function() {
            return this.name;
        }
    }
];

// prints each person's name
var names = people.map(function(person) {
    return person.name;
});
console.log(names);

// using our prop() function
var moreNames = people.map(prop('name'));
console.log(moreNames);

// prints 'Bart'
console.log(people[0].getName());

// not elegant, but you can also do this
console.log(prop('name')(people[0]));