IE问题 – 不支持Object.keys(value).length

我一直在尝试在Internet Explorer中调试一些js,我无法想出这个。 这是导致错误的行:

var numberOfColumns = Object.keys(value).length; 

错误是……

 Message: Object doesn't support this property or method Line: 640 Char: 5 Code: 0 URI: xxx 

起初我认为它与Object.keys(value).length; 属性,但奇怪的是(对我来说),错误是在char 5,这是变量名称的开头。

无论如何,我不知道发生了什么或如何解决它。 另外,如果我更换:

 var numberOfColumns = Object.keys(value).length; 

用……

 var numberOfColumns = 9; // troubleshooting 

错误仍然存​​在。 请帮忙。

更新

jsFiddle补充道

http://jsfiddle.net/4Rab7/

IE> = 9支持keys属性。您可能在早期版本中测试它。 一个简单的解决方法是:

 var length = 0; for(var prop in data){ if(data.hasOwnProperty(prop)) length++; } 

这是一个演示: http : //jsfiddle.net/vKr8a/

有关详细信息,请参阅此兼容性表:

http://kangax.github.com/es5-compat-table/

或者,您可以将推荐的polyfill用于本机不支持Object.keys浏览器

 Object.keys=Object.keys||function(o,k,r){r=[];for(k in o)r.hasOwnProperty.call(o,k)&&r.push(k);return r} 

Object.keys已在ECMAScript第5版中引入。 因此,如果IE版本低于9,则不支持。