我想知道是否有可能给JavaScript函数一个类型/类。
当然,函数的Object类/类型是' function/function'。
http://bonsaiden.github.io/JavaScript-Garden/types.typeof
然而,在我的项目中,我想为函数定义一个类来对它们进行分组。
这是类似的概念HTML/CSS DOM元素类
我有一个函数,其中args是一个函数,我想区分函数的type
或class
是传递给函数的。
它不与任何对象方法一起工作,只是一个函数,但它可以像obj.hasOwnProperty('someClass')
一样区分。
我只是想知道是否有聪明的方法,如果你认为不可能,请坚持。
谢谢。
p。我不知道为什么有人投-1票并结束这个问题。
这是Javascript的reflection
的问题。如果发现JS的一些反射因子是有限的,也没关系。而且我认为避免明确指出某件事在某种语言中是不可能的是不明智的。
函数是一个对象。您可以向任何函数添加自己的自定义属性。所以,如果你想在几个不同的函数上设置你自己的类型,这样你就可以进行测试,你可以给每个函数添加相同的自定义属性(给它分配不同的值)。
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);
注意,这有点不寻常,如果你解释了你想要解决的实际问题,可能有一个更常见的设计模式可以帮助你。
@jfriend00已经给出了答案。
供参考,函数是对象,所以它们可以有你自己的自定义属性,所以你可以创建你自己的自定义属性。
他是对的,所以要为任何函数添加类/属性,只需执行
var myFunction = function(foo){...};
myFunction['someClass'] = true;
//To distinguish
if (someFunction.hasOwnProperty('someClass'))
{
console.log('someFunction is someClass');
}