Hack je něco, co něco (jiného) „znásilňuje“ :) Tvůj příklad je velmi užitečný a bylo dobré ho zmínit, výhrady sem měl pouze k použití pojmu „hack“.
Pro upřesnění, za hack považuji třeba resetování dontEnum attributu na nativních funkcích, například:
var push = Array.prototype.push; delete Array.prototype.push Array.prototype.push = push;
K čemu to je dobré? for in na Array.prototype náhle najde i push funkci, což se hodí při vytváření array-like objektů. Více, až zveřejním svůj framework ,–)