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

javascript中的可调用对象是什么?,javascript,Javascript,我知道可调用对象类似于创建为对象的函数,可以在函数调用表达式中使用。 但是如何区分可调用对象和普通函数呢?我相信其他人可以给出更全面的答案,但基本上,可调用对象是可以调用的对象,这可以通过调用函数来证明,例如: if (func.call) { func.call(); } JSFiddle: MDN:我相信其他人可以给出更全面的答案,但基本上,可调用对象是您可以调用的对象,这可以通过调用函数来证明,例如: if (func.call) { func.call();

我知道可调用对象类似于创建为对象的函数,可以在函数调用表达式中使用。
但是如何区分可调用对象和普通函数呢?

我相信其他人可以给出更全面的答案,但基本上,可调用对象是可以调用的对象,这可以通过调用
函数来证明,例如:

if (func.call) {
    func.call();   
}
JSFiddle:


MDN:

我相信其他人可以给出更全面的答案,但基本上,可调用对象是您可以调用的对象,这可以通过
调用
函数来证明,例如:

if (func.call) {
    func.call();   
}
JSFiddle:

MDN:

在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
在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

你能给出一个“可调用对象”的例子吗?也许一个例子可以帮助我们清楚地理解这个问题。规范谈到了一个
IsCallable()
测试,它为实现
[[Call]]
内部方法的对象返回true。它是讨论内部结构的有用术语,但对于任何实际用途的JavaScript程序员来说,它都不是很有趣。你能举一个“可调用对象”的例子吗?也许一个例子可以帮助我们清楚地理解这个问题,规范谈到了一个
IsCallable()
测试,对于实现
[[Call]]
内部方法的对象,返回true。它是讨论内部结构的有用术语,但对于任何实际用途的JavaScript程序员来说,它都不是很有趣。