Вариант
Function.prototype.limitExecByInterval = function (interval) {
var fn = this, expireTime = 0, timer;
return function () {
var elapseTime = expireTime - new Date();
if (elapseTime <= 0) {
timer = clearTimeout(timer);
fn.apply(this, arguments);
expireTime = Number(new Date()) + interval;
} else if (!timer) {
var args = arguments, scope = this;
timer = setTimeout(function () {
expireTime = 0;
args.callee.apply(scope, args);
}, elapseTime);
}
}
};
var myFunc = function() {};
var myLimitedFunc = myFunc.limitExecByInterval(150);