我需要测试给定的函数对象是否属于某个类。
在 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/