Javascript IE问题-对象.键(值).不支持长度

Javascript IE问题-对象.键(值).不支持长度,javascript,jquery,internet-explorer,Javascript,Jquery,Internet Explorer,我一直在尝试在InternetExplorer中调试一些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有关property,但奇怪的是(对我来说

我一直在尝试在InternetExplorer中调试一些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有关
property,但奇怪的是(对我来说),错误在char 5,这是变量名的开头

不管怎么说,我不知道发生了什么,也不知道如何修复它。此外,如果我替换:

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

var numberOfColumns = 9; // troubleshooting
错误仍然存在。请帮忙

更新

添加了jsFiddle


对象。ECMAScript第5版中引入了键。因此,如果您的IE版本低于9,它将不受支持。

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

var length = 0;
for(var prop in data){
    if(data.hasOwnProperty(prop))
        length++;
}
下面是一个演示:

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


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

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 = Object.keys || function(o,k,r) { 
// If the script doesn't detect native Object.keys 
// support, it will put a function in its place (polyfill)

    r=[];
    // Initiate the return value, empty array

    for(k in o) r.hasOwnProperty.call(o,k) 
    // loop through all items in the object and verify each
    // key is a property of the object (`for in` will return non 
    // properties)

    && r.push(k);
    // if it is a property, save to return array

    return r
}

你试过用firebug或其他调试工具来运行它吗?你能再展示一些代码吗,可能是JSFIDLE的问题如果你用非错误代码替换了假定的错误代码,但仍然失败了,问题可能是其他原因。我的公司屏蔽了某些网站,而FF插件页面恰好如此,以及我在这篇文章中找到的一个工具,都被阻止了。但是,是的,我马上就可以准备好JSFIDLE了。我用一个简单的JSFIDLE实现更新了这个问题。在IE 8中,没有警报,但在Firefox中,它是有效的。太棒了,我刚刚想出了解决方案,但是你的比我的简单多了。我一定会和你一起去这会污染全球var@StevenLu您可以使用
for(数据中的var prop)
。是的,如果您想避免我的否决票,这就是答案:PAre我们确定IE>=9中实际上支持键吗?我正在运行IE11,但它仍然不支持它。哈哈,他们决定删除它了吗?干净、简单、有效。