Object instanceof Object
true
Object instanceof Function
true
Function instanceof Object
true
Function instanceof Function
true那么,如果函数是一个对象,而对象又是一个函数,那么
Function === Object和Function == Object是假的吗?
我确实理解检查对象的实例与比较是不同的。所以这里的问题是,如果两个对象(实际上是类型)是彼此的实例,那么类型不应该是相同的吗?
注意: Object不是Number或Array的实例,而是Function的实例。
发布于 2010-01-05 08:19:52
来自JavaScript Prototypal Inheritance
在JavaScript中,
所有的东西都继承自Object。我们可以说Object是每个变量的超类,或者更好地说是超级构造器,一切都是一个instanceof对象。对象构造函数是一个函数,但函数是一个instanceof对象。这意味着这些断言总是正确的:
(Object instanceof Function) === (Function instanceof Object)
上面的例子是正确的,因为Object是一个构造函数,而JavaScript中的构造函数总是一个函数。同时,每个函数都有自己的原型,原型总是从Object.prototype继承而来。函数构造函数本身就是一个函数,函数原型是一个function(){};
(Function.prototype instanceof Object) === (function(){} instanceof Object)
发布于 2010-01-05 08:15:27
JavaScript中的一切都是Object,因为JavaScript是一种面向对象的语言。Function是Object的实例,因为一切都是Object的实例。很简单。但是,初始化其他对象(构造函数)的对象在JavaScript中也是Function,因此Object也是Function是有意义的。
想想看:
var obj = new Object();本例中的Object被用作Function,不是吗?因此,虽然从理论上讲,Object应该是语言中的最底层对象,但如果没有Functions (双关语!),JavaScript就不能工作,所以您需要将两者放在同一级别。Object需要是Function的一个实例,因为它是一个构造函数,它需要创建更多的自身实例。
function FooBar() {}上面的FooBar类既是Object又是Function的实例,因为它两者都是。同样的逻辑也适用于内置的Object和Function对象;它们都是这两者的实例。
呼,令人迷惑。这有什么意义吗?
发布于 2010-01-05 08:13:59
我认为这更多是由于定义对象的独特方式。你不是在javascript中定义类型,而是定义一个构造函数。但是您也没有将构造函数定义为构造函数,它只是一个函数。
然后,您可以通过它们的名称来引用这些类型,constructor....which只是一个函数。
function Tiger(){ //function, or object?
}
function Apple(){ //function, or object?
}两者都可以是对象,也可能只是函数。只有你使用它们的方式才能决定这一点。因此,在较低的层次上,对象是函数,函数是对象,这是有意义的,但还是有区别的,对吧?
https://stackoverflow.com/questions/2003183
复制相似问题