什么是javascript中的可调用对象?

时间:2015-10-04 12:16:06

标签: javascript

我知道可调用对象就像创建为对象的函数一样,可以在函数调用表达式中使用。 但是如何区分可调用对象和正常函数呢?

2 个答案:

答案 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