我知道可调用对象就像创建为对象的函数一样,可以在函数调用表达式中使用。 但是如何区分可调用对象和正常函数呢?
答案 0 :(得分:1)
我确定其他人可以提供更全面的答案,但基本上可调用的对象是您可以调用的对象,正如call
函数的存在所证明的那样,例如:
if (func.call) {
func.call();
}
JSFiddle:https://jsfiddle.net/Lzaonmgo/
MDN:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/call
答案 1 :(得分:-1)
在JS中,函数是"类似对象"从某种意义上说,他们有财产:
function f() { return 2; }
f.foo = 3;
console.log(typeof f); // "function"
console.log(f.foo); // 3
除此之外,确实没有"可调用对象"这不是一个简单的功能(除了可能在某些IE浏览器中?我不知道),甚至不可能做一些奇怪的事情,比如创建一个以函数为原型的对象:
var obj = Object.create(f);
console.log(obj()); // TypeError: obj is not a function