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

ver*_*sed 11 javascript jquery internet-explorer

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

var numberOfColumns = Object.keys(value).length;
Run Code Online (Sandbox Code Playgroud)

错误是......

Message: Object doesn't support this property or method
Line: 640
Char: 5
Code: 0
URI: xxx
Run Code Online (Sandbox Code Playgroud)

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

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

var numberOfColumns = Object.keys(value).length;
Run Code Online (Sandbox Code Playgroud)

随...

var numberOfColumns = 9; // troubleshooting
Run Code Online (Sandbox Code Playgroud)

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

更新

jsFiddle补充道

http://jsfiddle.net/4Rab7/

Asa*_*din 21

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

var length = 0;
for(var prop in data){
    if(data.hasOwnProperty(prop))
        length++;
}
Run Code Online (Sandbox Code Playgroud)

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

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

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


dig*_*out 13

或者,您可以将推荐的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}
Run Code Online (Sandbox Code Playgroud)