gpt4 book ai didi

javascript - 了解一个简单的原型(prototype)继承示例

转载 作者:行者123 更新时间:2023-11-30 08:45:27 26 4
gpt4 key购买 nike

我是编程新手,正在尝试了解 JS 中的继承。我在读JavaScript Objects in Detail并且无法辨别此示例中空构造函数的重要性。考虑一下:

function Fruit () {

}

Fruit.prototype.color = "Yellow";
Fruit.prototype.sweetness = 7;
Fruit.prototype.fruitName = "Generic Fruit";
Fruit.prototype.nativeToLand = "USA";

Fruit.prototype.showName = function () {
console.log("This is a " + this.fruitName);
}

Fruit.prototype.nativeTo = function () {
console.log("Grown in:" + this.nativeToLand);
}

var mangoFruit = new Fruit ();

这比定义一个具有与参数相同属性的构造函数有何好处?

此外,如果浏览器支持不是问题,那么使用 Object.create() 是否比使用构造函数或使用 prototype 进行继承更可取?

最佳答案

实际上,您的示例(在本例中)并不好。您已经定义了与所有水果共享的属性和方法(通过原型(prototype)),但并非所有水果都是黄色的或甜度为 7。在这种情况下,这些作为传递的参数并在每个实例中定义(使用this.color 在你的构造函数中)。

那么你什么时候会选择一个而不是另一个?让我们回到水果 - 我们可以对水果执行一些共享操作(例如,eatpeel) - 这些可能是您原型(prototype)的方法。这些方法只定义一次,所有实例都引用同一个方法。

唯一的东西(colorsweetness)作为实例属性(通过参数传入)是有意义的。

如上所述,原型(prototype)方法的另一个优点是:它们是单一引用。调用 new Fruit() 一千次将创建一千个 Fruit 实例,但它们都将引用单个原型(prototype)方法(例如,eat)。

关于javascript - 了解一个简单的原型(prototype)继承示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22393731/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com