如何知道函数是类还是函数

时间:2015-05-30 14:39:42

标签: javascript

我实际上试图区分(在我的代码中)函数和类。

我需要知道,在一个简单的console.log中,如果我的函数的参数是一个类或一个简单的函数。

我实际上是在上课,不是对象,而是真正的课程。

像:

function(item){
    if(isClass(item)){
        console.log('it s a class !');
    }else{
        if(isFunc(item)){
            console.log('it s a function !');
         }
    }
}

编辑:angular 2能够区分注射器容器类中的函数和类

3 个答案:

答案 0 :(得分:2)

JavaScript中没有任何类。虽然函数可以使用new关键字进行实例化。

您可以使用instanceof检查某些内容是否为函数:

var a = function() {};

a instanceof Function; // true

instanciated函数将是该特定函数的一个实例:

var b = new a();

b instanceof Function; // false
b instanceof a; // true

答案 1 :(得分:1)

Javascript中有没有类* 。相反,在{<1}}关键字的帮助下,JavaScript 中的函数可以像构造函数一样。 (constructor模式)

JavaScript中的对象直接从其他对象继承,因此我们不需要类。我们所需要的只是一种创建和扩展对象的方法。

您可以使用new检查传递给jQuery.isFunction()的参数是否是Javascript函数对象。

来自documentation

isFunction()

  

描述:确定传递的参数是否是JavaScript函数对象。

修改 正如user2867288正确指出的那样,Javascript没有类的声明需要用一点点盐。

阅读这些文章,了解有关ECMAScript 6标准的更多信息:

答案 2 :(得分:1)

构造函数(&#34;类和#34;)只是函数。没有多少区别他们。

但是,它们的用法完全不同。类通常在原型上有方法甚至其他属性。事实上,你可以区分它们。 1
使用箭头符号(ES6)构建的绑定功能和功能甚至根本没有原型。

function isFunc(fn) {
    return typeof fn == "function" && (!fn.prototype || !Object.keys(fn.prototype).length);
}

1:未检测到不使用原型继承的非典型课程