跨浏览器功能标识

时间:2014-08-08 04:20:46

标签: javascript internet-explorer cross-browser

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

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

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

什么是实现此的跨浏览器方式,不涉及从函数的toString表示中删除名称并将其用作函数标识。表示{{3 }}?

1 个答案:

答案 0 :(得分:0)

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

使用设置对象:

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; });

相关: