【发布时间】:2013-10-25 12:12:08
【问题描述】:
我有一个问题需要在 JS 中解决某种继承问题。
我设置了一个小jsfiddle来解释,看:
V1 http://jsfiddle.net/FFTj4/5/
function Vehicule(name) ...
这里的结果并不像预期的那样,但很容易解释。我正在调用父构造函数,将函数的作用域应用于设置名称的“调用”对象。到目前为止,汽车和跑车的名称还没有在他们的车辆原型中设置,所以当我询问名称时,车辆名称是未定义的。
我修复了它:
V2(在 jsfiddle 中取消注释 v2 部分) 好吧,现在我也在“确定” getName 调用以确保我得到了我的“名字”。我虽然它是固定的!所以我也将修复程序应用于 SportCar
V3(在 jsfiddle 中取消注释 v3 部分) 好吧,这不可能那么容易,现在我已锁定 SportCar 调用 Car getName,但汽车的范围仅限于 SportCar,因此当汽车“尝试”调用 Vehicule getName 时,它会改为调用 SPortCar getName,依此类推,超过了最大调用堆栈大小。
我需要想出一种方法来调用当前对象的超类,无论是否使用apply调用,当然要保持最顶层对象的范围:/
我的想法已经用完了,已经做了将近 2 周了。
谢谢!
【问题讨论】:
标签: javascript oop inheritance