анонимную функцию, возвращаемую из not(), можно отдельно забиндить или вызвать на другом контексте, что позволит выполнять f с этим контекстом.
function func(a,b,c) { return this[a] === b + c; }
var ifunc = not( func );
/****/
var obj = { 'prop' : 10, 'attr' : true };
/****/
ifunc.call( obj, 'prop', 4, 6 )
метод call также переопределяет контекст при вызове функции, как и apply, разница в подстановке аргументов.
В другом случае можно генерировать методы для каких-нибудь объектов, причем с привязкой к прототипу.
function equal( a ) { return this.prop === a; }
/*...*/.prototype.eq = equal;
/*...*/.prototype.neq = not( equal );
А глобальный контекст вызывается обычно без явного указания для this.