【问题标题】:Cross browser function identity跨浏览器功能标识
【发布时间】:2014-08-08 04:20:46
【问题描述】:

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

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

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

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

【问题讨论】:

  • IE 确实允许这样的结构......也许如果你能分享相关的代码,我们可以更好地理解这个问题。
  • name 在 ie 中不可用。
  • @AnanthaSharma 我说的是函数调用,而是函数的身份测试和某种集合中的包含。
  • 不要把它当作个人的。

标签: javascript internet-explorer cross-browser


【解决方案1】:

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

使用一个对象作为集合:

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

相关:

【讨论】:

    猜你喜欢
    • 2014-09-20
    • 2013-12-24
    • 1970-01-01
    • 2016-09-09
    • 2012-09-22
    • 1970-01-01
    • 1970-01-01
    • 2014-11-05
    • 2013-04-05
    相关资源
    最近更新 更多