对象和功能非常混乱

Mur*_*ali 13 javascript

Object instanceof Object
true
Object instanceof Function
true
Function instanceof Object
true
Function instanceof Function
true
Run Code Online (Sandbox Code Playgroud)

所以如果Function是一个Object而Object是一个函数怎么来的呢

Function === Object并且Function == Object都是假的?

我知道检查对象的实例与比较不一样.所以这里的问题是如果两个对象(实际上是类型)是彼此的实例的情况下的模糊性,那么类型不应该相同吗?

注意:Object不是Number或Array的实例,只是Function的一个实例.

Ann*_*nie 17

来自JavaScript Prototypal继承:

JavaScript中的所有东西都继承自Object.我们可以说Object是每个变量的超类或更好的超级构造函数,并且所有东西都是Object的实例.Object构造函数是Function,但Function是Object的instanceof.这意味着这些断言总是正确的:

(Object instanceof Function) === (Function instanceof Object)

上面的例子是正确的,因为Object是一个构造函数,JavaScript中的构造函数总是一个Function.同时,每个Function都有自己的原型,而原型总是从Object.prototype开始继承.Function构造函数是一个Function本身,函数原型是一个函数(){};

(Function.prototype instanceof Object) === (function(){} instanceof Object)


Sas*_*gov 5

一切都Object在JavaScript中,因为JavaScript是一种面向对象的语言.Function是一个实例,Object因为一切都是一个实例Object.很简单.然而,初始化其他对象(构造函数)对象也是Function■在JavaScript,因此它将使意义Object也成为一个Function.

想一想:

var obj = new Object();
Run Code Online (Sandbox Code Playgroud)

Object在这种情况下用作Function,是不是?因此,理论上,虽然Object应该是语言中最低级别的对象,但JavaScript不能在没有Functions(双关语!)的情况下运行,因此您需要两者都处于同一级别.Object需要是一个实例,Function因为它是一个构造函数,它需要创建更多的自身实例.

function FooBar() {}
Run Code Online (Sandbox Code Playgroud)

FooBar上面的类既是一个实例ObjectFunction,因为它是两者兼而有之.相同的逻辑适用于内置ObjectFunction对象; 他们是两者的例子.

笨蛋,令人困惑.这有什么意义吗?