JavaScript原型 - 请澄清

时间:2018-03-01 00:17:28

标签: javascript inheritance prototype

有人可以帮我理解原型属性吗?我不明白原型属性是函数的属性还是函数内部的属性。

让我们说我们创建了以下构造函数,Food。此时,函数Food()具有属性Food.prototype。由于Food是Object的一个实例,因此这意味着Obect.prototype是使用Food()创建的所有对象的原型属性。

function Food() {}

然后创建另一个构造函数Pizza。 Pizza有Pizza.prototype属性。

function Pizza(toppings) {
    this.toppings = toppings;
}

然后我们通过将Pizza的原型属性设置为Food的一个实例,使Pizza继承自Food。 Pizza的原型属性现在是Food.prototype,因为Food是披萨的父母。

Pizza.prototype = new Food();

然后我们创建一个Pizza

的实例
var myPizza = new Pizza("pepperoni");

myPizza还有一个继承自Pizza的原型属性吗?如果是这样,myPizza.prototype == Object.prototype?什么是Obejct.prototype?它是Object()的属性吗?只有函数有原型属性吗? Object.prototype是一个对象吗? Pizza.prototype是否指的是创建Pizza构造函数的整个函数?这个函数本身就是一个对象吗?

function Pizza(toppings) {
    this.toppings = toppings;
}

或者Pizza.prototype只是引用了Pizza()范围内的内容?

this.toppings = toppings;

Pizza.toppings是Pizza.prototype的属性吗?但是,Pizza.prototype不是Pizza()的财产吗?浇头只是使用Pizza构造函数创建的对象的属性吗?而Pizza.prototype是Pizza构造函数的属性吗?

目前的原型链如下:

myPizza - > Pizza.prototype - > Food.prototype - > Object.prototype中

0 个答案:

没有答案