You're doing it wrong!
Po pierwsze, to użycie Object.prototype nie ma tu sensu jeśli setAttributes ma operować tylko na elementach DOM. Bo tak, jak masz teraz, to metodę setPrototype zyskują również... wszystkie stringi w programie. Albo wszystkie liczby. One też dziedziczą po Object.prototype! Rozumiesz chyba, że to nie ma sensu. A oprócz tego, że nie ma sensu, to jeszcze w IE nie działa, bo IE jest dziwne (powinno to działać, bo skoro wszystkie obiekty dziedziczą po Object, to wszystkie -- w IE elementy DOM najwyraźniej po Object nie dziedziczą).
Więc powinieneś użyć bardziej odpowiedniego prototypu. Najlepiej takiego, który odnosi się do wszystkich elementów DOM. Rzeczywiście, istnieje taki prototyp. Zwie się po prostu Element.prototype. Czyli piszesz:
Element.prototype = function() {
...
}
No i koniecznie dodaj DOCTYPE do strony, bo tylko wtedy będzie to działało w IE. Aha, wspominałem już, że będzie działało tylko od IE8 w górę? No, to tak właśnie będzie. Miłego dnia :/.
edit: A tak w ogóle to niektórzy nie zalecają modyfikowania prototypów obiektów wbudowanych w język, czy w przeglądarkę. Jeszcze gdy rozszerzamy DOM to pół biedy, ale gdy dorwiemy się do Object.prototype, to nagle połowa pętli for-in przestanie prawidłowo działać, bo nie są zabezpieczone przy użyciu hasOwnProperty. Według niektórych nie powinno się nawet rozszerzać elementów DOM (w jakikolwiek sposób), tylko wszystkie dane przechowywać lokalnie.
Wiesz, zawsze mógłbyś po prostu używać zamiast komorkaTabeli.setAttributes({ color: red }) to czegoś w stylu setAttributes(komorkaTabeli, { color: red });. Wymagałoby to tylko niewielkiej przeróbki funkcji anonimowej podstawianej do Object.prototype.setAttributes. Gdybyś zamknął tę nową funkcję setAtrributes w domknięciu zawierającym cały kod, to nawet nie zaśmieciłbyś przestrzeni globalnej. A jakbyś musiał zaśmiecić, to mógłbyś użyć wzorca symulującego przestrzenie nazw, czyli MYAPP.util.setAttributes(komorkaTabeli, { color: red }). Choć nie wygląda to już tak przejrzyście.