2011-04-21 24 views
0

我在想一件事,因爲for(var i in obj)幾乎可以枚舉任何東西在DOM或JavaScript對象內部,所以有沒有任何自我託管的JavaScript編輯器使用for ... in來提供語法自動建議,發現類屬性/方法,外部API ?使用`for ... in`自我託管的javascript編輯器?

編輯1:感謝球員的語法建議和非枚舉功能,但我期待的是編輯基於這個想法。

+3

正確的語法是'爲(VAR我在OBJ)' – Raynos 2011-04-21 10:16:04

回答

3

因爲一些成員是不可枚舉的,你必須使用Object.getOwnPropertyNames,甚至走路的原型鏈中的位(使用Object.getPrototypeOf)。這裏就是我的意思是:

>>> Object.getOwnPropertyNames([]); 
["length"] 

>>> Object.getOwnPropertyNames(Array.prototype); 
["length", "constructor", "toSource", "toString", "toLocaleString", ...] 
+0

感謝的人,我想我應該只是做我自己的一個編輯器。 – est 2011-04-25 04:02:18

1

for(in)只會給你enumeratable性能,其中不包括大部分功能。

遺憾的是,DOM的大比例構造的非enumeratable功能而非性能,也就是說,你的想法可能不會以任何有意義的方式工作。抱歉。 :(

這裏有一個類似的問題,如果有人問起列舉window對象:http://compgroups.net/comp.lang.javascript/Please-help-with-enumerating-functions-in-window-object

[編輯]

在各種瀏覽器,如螢火蟲,在範圍以外的工作級別的調試工具這使得他們可以做一些事情,比如看到不可枚舉的元素,也可以跨越標籤和域之間的界限,在正常瀏覽器範圍內工作的腳本是有限的,不能做這些事情。所以如果你的計劃是編寫一個瀏覽器插件,那麼是的,你可能可以做到這一點。然而,把它作爲一個普通的javascript包含在瀏覽器中完全不同。

+0

功能顯示不出來? Webkit/Chrome的WebInspector如何枚舉? – est 2011-04-21 10:13:41

+0

@你可以使用'console.dir'這是不同的低級功能。 @Spudley的一些函數是可枚舉的。 – Raynos 2011-04-21 10:16:43

+0

使用Object.getOwnPropertyNames() – ianj 2011-07-02 08:53:08