函数是javascript中的对象?

时间:2012-12-27 00:08:06

标签: javascript

var obj = {};
var fn = function(){};
obj.prop = "some value";
fn.prop = "some value";
assert( obj.prop == fn.prop, "Both are objects, both have the property." );
assert(typeof(obj) === 'object', "Yes its an object");
assert(typeof(fn) === 'object', "why is this not an object");

我从周围的一些人那里听到functions are objects这是我到目前为止所相信的,但为什么第一个条件passes很好,第三个条件fails

2 个答案:

答案 0 :(得分:7)

函数对象,但它们是对象的特定类型typeof(fn)应评估为“function”,这是“对象”的子类型。

答案 1 :(得分:7)

那是因为函数的 direct 类型是"function"

然而,你错过了这个断言:

fn instanceof Object // true

顺便说一下,"number""string"等类型严格来说是{em>不是 Object的后代,即使它们就像对象一样从某种意义上说,他们有方法;只是其中一个让JavaScript变得有趣的事情:)

另请参阅:typeof及其值范围。