我认为只有一种方法可以:获取所有可用接口的列表,通过此列表进行迭代,并使用instanceofoperator 检查变量值的类型.
这种方式应该如下:
var element = ... // here your element comes
var interfaces = [HTMLParagraphElement, HTMLDivElement];
var interface = interfaces.filter(function (x) { return element instanceof x; })[0].toString();
Run Code Online (Sandbox Code Playgroud)
现在你得到类似于function HTMLParagraphElement() { [native code] }接口变量的东西(如果是元素<p />).我认为这仅适用于V8(谷歌浏览器).现在您可以使用regexies来提取接口名称.
interface.match(/function (.+)\(\)/)[0]
Run Code Online (Sandbox Code Playgroud)
要获取以下可以使用的所有接口的列表(仅适用于HTML元素):
var interfaces = [];
for (var key in window) {
if (key.indexOf('HTML') == 0)
interfaces.push(window[key]);
}
Run Code Online (Sandbox Code Playgroud)
我同意duri的答案,所以你不需要枚举所有接口,使用constructor方法更容易获得原型函数.之后你可以使用我写的正则表达式来提取接口名称.
只需使用document.createElement('p').constructor,这将返回HTMLParagraphElement对象.
如果你想获得接口的名称(作为字符串),toString()在对象上调用方法(你会得到类似的结果[object InterfaceName])并使用一些字符串方法(例如正则表达式)解析它:document.createElement('p').toString().match(/^\[object (.*)\]$/)[1].
| 归档时间: |
|
| 查看次数: |
689 次 |
| 最近记录: |