3

Array.prototype是否可以以跨浏览器友好的方式遍历所有 JavaScript函数名称?我知道这适用于 IE9+ 和现代浏览器:

var names = Object.getOwnPropertyNames(Array.prototype);
names.forEach(function(name) {
    console.log(name); // function name
});   

有没有办法在 IE8 和 IE7 中获得相同的列表?我试过了:

for(var key in Array.prototype) {
    console.log(key); // undefined
}
4

1 回答 1

1

如果您试图查找版本 9 之前的 IE 浏览器中支持的内容,您可以假设它是 IE9 列表的子集并筛选出不支持的内容。

这是您在 #9 之前在 IE 中获得的列表:

连接、构造函数、连接、长度、弹出、推送、反向、移位、切片、排序、拼接、toLocaleString、toString、unshift

你可以测试一下——

<!doctype html>
<html lang="en">
<head>
<meta charset= "utf-8">
<title>Small Page</title>
<style>
</style>
<script>
onload= function(){
var testnames= ['concat', 'constructor', 'every', 'filter', 'forEach',
'indexOf', 'join', 'lastIndexOf', 'length', 'map', 'pop', 'push', 'reduce',
'reduceRight', 'reverse', 'shift', 'slice', 'some', 'sort', 'splice',
'toLocaleString', 'toString', 'unshift'],
    L= 23;
    while(L){
        if(!(testnames[--L]in Array.prototype)) testnames.splice(L, 1);
    }
    document.getElementsByTagName('textarea')[0].value= testnames;
}
</script>

</head>
<body>

<p>   <textarea rows="8" cols="60"> </textarea>     </p>

</body>
</html>
于 2012-10-27T04:19:30.287 回答