我想知道是否可以为JavaScript函数提供类型/类。
当然,Object类/函数类型是'函数/函数'。
http://bonsaiden.github.io/JavaScript-Garden/#types.typeof
但是,在我的项目中,我想以某种方式定义函数类来对它们进行分组。
它是类似的概念HTML / CSS DOM元素类。
我有一个函数,其中args是一个函数,我想区分函数的type
或class
被传递给函数。
它不适用于任何对象方法,只是一个函数,但可以区分为obj.hasOwnProperty('someClass')
。
我只是想知道是否有聪明的方法,如果你认为不可能,请坚持。
感谢。
PS。我不是为什么有人投票-1并关闭这个问题。
这是Javascript reflection
的问题。如果发现JS的某些反射因子有限,那就没问题。而且我认为避免明确某种语言不可能存在是不明智的。
答案 0 :(得分:0)
函数是一个对象。您可以将自己的自定义属性添加到任何功能。因此,如果您想在几个不同的函数上设置自己的类型,以便可以测试它,您可以只为这些函数添加相同的自定义属性(分配了不同的值)。
function myFunc1() {}
myFunc1.myType = "whatever1";
function myFunc2() {}
myFunc2.myType = "whatever2";
function myFunc3() {}
myFunc3.myType = "whatever3";
function callMe(cb) {
if (cb.myType === "whatever1") {
// code here
} else if (...) {
// code here
}
}
callMe(myFunc1);
请注意,这有点不寻常,如果您解释了您尝试解决的实际问题,可能会有一个更常见的设计模式可能会对您有所帮助。
答案 1 :(得分:0)
@ jfriend00提出了答案。
仅供参考,函数是对象,因此它们可以拥有您自己的自定义属性,因此您可以创建自己的自定义属性。
他是对的,所以要为任何函数添加一个类/属性,只需执行
var myFunction = function(foo){...};
myFunction['someClass'] = true;
//To distinguish
if (someFunction.hasOwnProperty('someClass'))
{
console.log('someFunction is someClass');
}