【发布时间】:2019-10-19 13:32:56
【问题描述】:
我们知道 Javascript 中的所有内容都继承自 Object:
所以如果我使用如下构造函数创建一个对象:
function Rabbit() {
this.color = 'White'
}
let obj = new Rabbit();
alert(Rabbit.__proto__ === Function.prototype) //true
alert(obj.__proto__ === Rabbit.prototype) //true
alert(obj.__proto__.__proto__ === Object.prototype) //true
alert(Function.__proto__ === Object.prototype) //false
alert(Object.getPrototypeOf(Function) === Object.getPrototypeOf(Object)) //true
前 3 个结果是有意义的,因为 obj 继承自 Rabbit 函数,该函数本身继承自 Function。但是如果Function 继承自Object 那么为什么第四个结果是False。还有为什么Object 和Function 有相同的原型(最后的结果)?
谁能解释一下这种行为。我在这里错过了什么吗?
【问题讨论】:
-
图表中的所有(大部分)对象都(间接)从
Object.prototype继承,而不是从Object继承。 -
Object和Function就像您图中的function f(args) { … }。
标签: javascript function object inheritance prototype