2012-10-26 33 views
3

是否有可能以跨瀏覽器友好的方式循環遍歷所有JavaScript函數名稱Array.prototype?我知道這工作在IE9 +和現代瀏覽器:列出IE8中的所有Array.prototype函數 -

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 
} 
+0

如果你談論的是本地的,不可枚舉的屬性,然後不有沒有。至少不是沒有手工製作一個可枚舉的列表,或者可能找到一些駭人的'toString()'技巧。 –

回答

1

如果你正在努力尋找什麼是在IE瀏覽器9版本之前的支持,你可以認爲它是IE9的名單的一個子集,簸了不支持的。

這是你#9之前在IE中獲取列表:

CONCAT,構造,連接,長度,流行,推動,扭轉,移位,切片,排序,接頭的toLocaleString,的toString,不印字

您可以測試它 -

<!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> 
+0

我把這個作爲[jsfiddle](http://jsfiddle.net/jstoolsmith/BrcDq/) – HBP

+0

具有諷刺意味的是,jsfiddle似乎不支持IE8。哈哈哈。 – Swivel

相關問題