в ES6 появится объект Proxy, при помощи которого это можно сделать не зная названий явно. В ES5 же, если рассматривать на вашем примере, можно реализовать так:
function getter (name) {
    // ...
    return function (value) {
        // do something with params
    }
}
function setter (name, value) {
   // ...
}
['attendee'].forEach(function (name) {
    
    Object.defineProperty(e, name, {
        get: bindName(getter),
        set: bindName(setter)
    });
    function bindName (fn) {
        
        return function () {
            var args = Array.prototype.slice.call(arguments);
            args.unshift(name);
      
            return fn.apply(this, args);
        }
    }
});