javascript - 如何返回对象接口(interface)名称/类型?

标签 javascript

是否有获取对象接口(interface)的函数之类的?

喜欢,<p/> = HTMLParagraphElement ,我该如何取回它?

提前致谢!

最佳答案

我认为只有一种方法可以做到这一点:获取所有可用接口(interface)的列表,遍历此列表并使用 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] } 的东西在接口(interface)变量中(如果元素是 <p /> )。我假设这只适用于 V8 (Google Chrome)。现在您可以使用正则表达式来提取接口(interface)名称。

interface.match(/function (.+)\(\)/)[0]

要获取所有接口(interface)的列表,您可以使用以下方法(仅适用于 HTML 元素):

var interfaces = [];
for (var key in window) {
  if (key.indexOf('HTML') == 0)
    interfaces.push(window[key]);
}

我同意 duri 的回答,所以你不需要枚举所有接口(interface),使用 constructor方法是获取原型(prototype)函数的更简单方法。之后你可以使用我写的正则表达式来提取接口(interface)名称。

关于javascript - 如何返回对象接口(interface)名称/类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7360795/

相关文章:

javascript - 是否可以在不使用服务器端技术的情况下将数据以文件形式存储到服务器

javascript - ReactJS - 完全相同的元素在 chrome 浏览器中放大/缩小时表现不同

javascript - 如何在 onStartup 和 onInstalled 中添加 Chrome 扩展监听器?

javascript - 使用 canvas 和 javascript 的嵌套动画

javascript - ctrl + 在 JavaScript 中点击

javascript - 当我在 Controller 中使用 ui.bootstrap 时,Angular 给出空白页面

javascript - Knockout.js "visible"调用异步函数 - 不工作

javascript - 使用 Jasmine 测试 fixture 的 window.resize

javascript - 如何将字符串与数组中对象的值进行比较

javascript - 了解基本js设计模式中的命令模式