gpt4 book ai didi

Javascript OOM,继承问题

转载 作者:行者123 更新时间:2023-11-30 17:48:31 26 4
gpt4 key购买 nike

我有一个问题需要用 JS 中的某种继承来解决。

我设置了一个小的 jsfiddle 来解释,看:

V1 http://jsfiddle.net/FFTj4/5/

function Vehicule(name) ...

这里的结果不是预期的,但很容易解释。我正在调用父构造函数,将函数的作用域应用到设置名称的“调用”对象。到目前为止,汽车和跑车名称尚未设置在他们的车辆原型(prototype)中,因此当我询问名称并进入车辆名称时,车辆名称未定义。

我用那个修复了它:

V2(取消注释 jsfiddle 中的 v2 部分)那么现在我也在“确定”getName 调用的范围以确保我得到我的“名字”。我以为它是固定的!所以我也将修复程序应用于 SportCar

V3(取消注释 jsfiddle 中的 v3 部分)好吧,这不可能那么容易,现在我锁定了 SportCar 调用 Car getName,但汽车的作用域是 SportCar,所以当汽车“尝试”调用 Vehicule getName 时,它​​调用 SPortCar getName,依此类推,超出最大调用堆栈大小。

我需要想出一种方法来调用当前对象父类(super class),无论是否使用应用调用,当然还要保持最顶层对象的范围:/

我的想法已经用完了,现在已经用了将近 2 周了。

谢谢!

最佳答案

在线:

Car.prototype.superClass = Vehicule;

你是assinning函数,不是一个实例,所以你不能调用

this.superClass.prototype.getName();

因为你没有上下文。没有创建对象。你需要这样做:

this.superClass.prototype.getName.call(this);

然后它应该像你想要的那样工作:)

但是,在您的代码中它不会工作,因为您正在覆盖 superClass。您需要为此使用“类”名称:

Car.prototype.getName.call(this);

或者只是不要将 superClass 分配给原型(prototype) ;)

Here是对原型(prototype)继承的简单解释。评论是波兰语,但 JS 是 JS ;)

关于Javascript OOM,继承问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19589557/

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