javascript - 跨浏览器功能标识

标签 javascript internet-explorer cross-browser

我需要测试给定的函数对象是否属于某个类。

在 Firefox 和 Chromium/Chrome 下,我可以创建一个函数名称字典,然后测试 somefunction.name in class_a_functions 是否使用 function.name。这在 IE 中不起作用。

我似乎无法创建函数对象字典来测试函数包含。

实现此目的的跨浏览器方法是什么不涉及从函数的 toString 表示形式中提取名称并将其用作函数标识。here 所示。 ?

最佳答案

您可以应用与其他对象/值相同的过程:迭代集合并将每个值与给定值进行比较。

使用设置的对象:

var haystack = {...};
var needle = someFunction;
var isContained = false;
for (var key in haystack) {
  if (needle === haystack[key]) {
    isContained = true;
    break;
  }   
}

使用数组作为集合:

var haystack = [...];
var needle = someFunction;
var isContained = false;
for (var i = 0; i < haystack.length; i++) {
  if (needle === haystack[i]) {
    isContained = true;
    break;
  }   
}

// if indexOf is available:
var isContained = haystack.indexOf(needle) > -1;
// if some is available
var isContained = haystack.some(function(v) { return v === needle; });
<小时/>

相关:

关于javascript - 跨浏览器功能标识,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25196001/

相关文章:

javascript - 检查构造函数调用是否来自扩展类

html - 有没有办法提供不同的 html 文件而不是 css 文件?

按钮的 CSS 滑动门技术,IE8 问题

html - 当指针事件设置为无时,SVG 内部链接在 IE11 中不可点击

javascript - 在 Ajax 中将输入发送到文件

css - 不同浏览器计算和渲染的子像素不同

javascript - 在单击/悬停的节点上显示名称? (D3.js 版本 4)

javascript - sessionStorage 中的 Json 与对象数组

javascript - 我不明白 require.js 如何处理加载路径。每次定义模块时都需要使用 require.config 吗?

当位于 :fixed pseudo-element 位置时,CSS 背景图像不会显示在 IE11 上