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/
有关详细信息,请参阅此兼容性表:
或者,您可以将推荐的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,则不支持。