在JavaScript中,每个对象都从特定原型继承其属性和方法,其中原型是对象。
继承形成一个原型链,其中(Object.prototype)位于其顶部(后跟null,没有属性或方法),并且所有对象都从它继承(除非其他人将其他更改插入到原型链中)。
如果(Object.prototype)是一个对象,它的构造函数是什么?
我的意思是完成此表达式以便评估为true。
Object.prototype instanceof .....
答案 0 :(得分:0)
来自Kyle Simpsion的"this and Object Prototypes" book of "You don't know JS"系列
function Foo() {
// ...
}
Foo.prototype.constructor === Foo; // true
var a = new Foo();
a.constructor === Foo; // true
默认情况下为
Foo.prototype
对象(在第1行的声明时间) 片段!)获取一个公共的,不可枚举的(参见第3章)属性 名为.constructor
,此属性是对该引用的引用 函数(在这种情况下为Foo)与对象关联。 此外,我们看到由"构造函数"创建的对象a
。呼叫new Foo()
似乎也有一个名为.constructor
的属性 类似地指向"创建它的功能"。注意:事实并非如此。 a上没有
.constructor
属性, 虽然a.constructor
确实解决了Foo
函数, "构造"实际上并不意味着"是由"构建的 出现。我们很快就会解释这种陌生感。...
" JavaScript中的对象具有内部属性,表示在 规范为[[Prototype]],它只是对另一个的引用 对象"
因此,Object.prototype本身不是一个对象。至于你关于instanceof的具体问题:
var a = new Function();
a.prototype instanceof Object; //true
var b = new String();
b.prototype instanceof Object; //false