gpt4 book ai didi

javascript - javascript中继承的正确语法

转载 作者:行者123 更新时间:2023-11-30 07:41:47 24 4
gpt4 key购买 nike

很简单的问题

我正在尝试理解 javascript 中的继承

function Animal() {
this.eats = true;
}
function Rabbit() {
this.jumps = true;
}
//Rabbit is-a Animal
Rabbit.prototype = Animal; //I'm assuming this does not inherit

alert(Rabbit.prototype.eats); // returns undefined

什么是正确的方法?

最佳答案

这是“已回答”但请允许我为后代提供一个替代方案。

调用父级的构造函数来获取父级的原型(prototype)并不是一个好主意。这样做可能会产生副作用;设置 ID,跟踪实例数量,构造函数内部发生的任何事情。

您可以在 Child 构造函数和 Object.create 或 polyfill 中使用 Parent.call() 来获取其原型(prototype):

function Animal () {
this.eats = true;
}

function Rabbit (legs) {
Animal.call(this);
this.jumps = true;
}
Rabbit.prototype = Object.create(Animal.prototype);

// Or if you're not working with ES5 (this function not optimized for re-use):
Rabbit.prototype = (function () {
function F () {};
F.prototype = Animal.prototype;
return new F();
}());

var bugs = new Rabbit();
alert(bugs instanceof Animal); // true
alert(bugs.eats); // true

关于javascript - javascript中继承的正确语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15556691/

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