IE8: unlike IE10 in IE8 mode, IE8 refuses to iterate over anything called 'constructor'.  Fortunately Object.keys seems to pick it up.