I'm using angular-1.2.1.js on ie8 and getting the error:
Object doesn't support property or method 'hasOwnProperty' (inside the angular ForEach method)
function forEach(obj, iterator, context) {
var key;
if (obj) {
if (isFunction(obj)){
for (key in obj) {
if (key != 'prototype' && key != 'length' && key != 'name' && obj.hasOwnProperty(key)) {
iterator.call(context, obj[key], key);
}
}
} else if ...
According to this stackoverflow post, hasOwnProperty does not work in ie8 (at least not on the window object)
I'm not sure if things are acting weird because I'm using ie8 mode on windows 8 ie, but hasOwnProperty works when I use
var a = {b:'c'}
a.hasOwnProperty('b') //true
why is ie8 throwing an error and how can I fix? thanks

Use a map to convert the guarded statement:
to a dispatch table:
And a feature check to choose:
References
JavaScript/Operators - Wikibooks, open books for an open world
Thomas Bahn: BLUG 2010 - Advanced JavaScript (AdvancedJavaScript.pdf)