gpt4 book ai didi

Javascript继承无法使用基类方法

转载 作者:行者123 更新时间:2023-11-29 18:34:02 25 4
gpt4 key购买 nike

我正在尝试在 javascript 中使用继承

这是展示我正在尝试的示例 C# 代码

public class animal
{
public animal() { }

public string move()
{
return "i'm moving";
}
public string bite()
{
return "just a nip!";
}
}

public class snake : animal
{
public snake() { }

public string bite()
{
return "been poisoned!";
}
}

用作:

var a = new animal();
var s = new snake();

a.bite(); // just a nip
s.bite(); // been poisoned

a.move(); // i'm moving
s.move(); // i'm moving

现在在 JS 中我有:

function animal() {
};

animal.prototype.move = function () {
return "im moving";
};

animal.prototype.bite = function () {
return "just a nip";
};

snake.prototype = new animal();
snake.prototype = snake;

function snake() {
}

snake.prototype.bite = function () {
return "been poisoned";
};



var a = new animal();
var s = new snake();


alert(a.bite()); // just a nip
alert(s.bite()); // been poisoned

alert(a.move()); //i'm moving
alert(s.move()); // s.move is not a function

我是否必须在每个子类中提供一个方法并调用基方法?即给 snake 添加一个 move 方法来调用 animal.move?

snake.prototype.move = function () {
return animal.prototype.move.call(this);
}

最佳答案

现在你设置了两次原型(prototype)。

snake.prototype = new animal();
snake.prototype = snake;

第二行应该是

snake.prototype.constructor = snake;

关于Javascript继承无法使用基类方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5107250/

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