我实际上试图区分(在我的代码中)函数和类。
我需要知道,在一个简单的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能够区分注射器容器类中的函数和类
答案 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函数对象。
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:未检测到不使用原型继承的非典型课程