4
A
回答
6
我認爲有隻有一個這樣做的方法:取所有可用的接口的列表,通過這個列表進行迭代,並檢查您的變量值使用instanceof
操作類型。
這種方式應該像下面:
var element = ... // here your element comes
var interfaces = [HTMLParagraphElement, HTMLDivElement];
var interface = interfaces.filter(function (x) { return element instanceof x; })[0].toString();
現在你喜歡的東西function HTMLParagraphElement() { [native code] }
接口變量(如果元素是<p />
)。我認爲這隻適用於V8(谷歌瀏覽器)。現在,您可以使用正則表達式來提取界面名稱。
interface.match(/function (.+)\(\)/)[0]
爲了讓你可以使用下面的所有接口的列表(僅適用於HTML元素):
var interfaces = [];
for (var key in window) {
if (key.indexOf('HTML') == 0)
interfaces.push(window[key]);
}
我同意杜裏的答案,所以你不必列舉所有的接口,使用constructor
方法是獲取原型函數的更簡單的方法。之後,您可以使用我編寫的正則表達式來提取接口名稱。
6
只需使用document.createElement('p').constructor
,即可返回HTMLParagraphElement
對象。
如果你想獲得的接口只是名字(作爲一個字符串),調用toString()
方法的對象(你會得到結果類似[object InterfaceName]
),並使用一些字符串的方法(例如,正則表達式)解析它: document.createElement('p').toString().match(/^\[object (.*)\]$/)[1]
。
0
基於this question,簡單的和通用的解決方案:
document.getElementById("myPElement").constructor.toString()
,可以返回兩種值(這取決於網絡瀏覽器):
- (最好的情況),如
"[object HTMLParagraphElement]"
的String - 的字符串,如:
"function HTMLParagraphElement() { [native code] }"
現在,您必須採取一些解決方法才能完成工作,使用正則表達式針對兩個可能的字符串執行並提取接口名稱。
var strConstr = myPElement.constructor.toString();
//Match "[object HTMLParagraphElement]":
new RegExp(/^\[object\s(.*)\]$/).exec(strConstr)[1];
//Match "function HTMLParagraphElement() { [native code] }"
new RegExp(/function (.+?)(/).exec(strConstr)[1];
兩個表達式提取「HTMLParagraphElement」部分
警告:避免IE怪癖模式,它會失敗
相關問題
- 1. Awesomium - 返回對象名稱
- 2. 如何返回類型接口
- 3. 當返回類型是通用接口時如何將對象轉換爲泛型返回類型?
- 4. c + +返回類型和類型名稱
- 5. 抽象類返回接口
- 6. C#接口返回類型
- 7. win32com COM方法調用返回對象類型的名稱而不是對象
- 8. 僅返回對象類型名稱,而沒有前面的「對象」。
- 9. 接口中的函數返回任何類實現它的類型的對象
- 10. 如何返回泛型類中的對象的泛型類型?
- 11. 如何知道對象表的對象類型名稱? (Oracle)的
- 12. 如何在Java中獲取返回類型爲List接口的對象?
- 13. Java接口VS類的返回類型
- 14. 返回對象類型C
- 15. 返回類型對象
- 16. 對象返回類型
- 17. 如何控制泛型WCF返回類型的名稱?
- 18. 返回與名稱關聯的對象
- 19. WCF和返回的對象名稱
- 20. 返回給定名稱的R對象
- 21. 的Java接口內的返回類型
- 22. 如何displayJson對象名稱/標籤,而返回相同的對象類型的列表
- 23. 存儲庫返回對象實現與泛型類型的接口
- 24. 返回類型和SOLID的接口
- 25. 返回的Java方法接口類型
- 26. 定義與接口的返回類型
- 27. 返回接口類型的Java方法
- 28. 實現接口但返回返回類型的子類?
- 29. 接口名稱作爲一個類型
- 30. GetInterfaces()返回全名= NULL泛型接口類型,
我怎麼會列出所有可用的接口? – jolt
您可以使用我添加到我的答案結尾的代碼列出它們。 – Eskat0n