【发布时间】:2016-04-26 14:57:03
【问题描述】:
我是面向对象编程的新手,请记住。我已经了解这里显示的第一部分是如何工作的(确实如此):
function Car() {
var __registration;
var setReg = function(val) {
__registration= val;
}
var getReg= function() {
return __registration;
}
return {
setReg: setReg ,
getReg: getReg
}
}
var myCar = new Car();
myCar.setReg("LSKM5215");
alert(myCar.getReg() ); //ALERTS LSKM5215
但是当试图以这种面向对象编程的方式管理继承时,它只会一次又一次地失败:
function Extras(){
var __sound;
var setSound= function(val) {
__sound= val;
}
var getSound= function() {
return __sound;
}
return {
setSound: setSound,
getSound: getSound
}
}
Extras.prototype = new Car();
myCar.setSound("SUPERB SOUNDSYSTEM 2.2"); //TypeError: myCar.setSound is not a function
如何在这种情况下创建继承?让 Car() 获取关于“soundsystem extras”的私有变量?
非常感谢。
【问题讨论】:
-
在第二个示例中,您从未将任何内容分配给 myCar
-
你从不使用
Extras。 -
你不需要
return,当计划使用函数作为构造函数时 -
您使用的不是构造函数,而是工厂函数。 myCar 不从 Car 或 Extras 函数继承任何东西。
-
@SergiuParaschiv 你知道,我知道,但是对于学习的人来说,首先以简单的方式学习它会很棒,然后才进入原型继承。语法很重要 IMO :)
标签: javascript oop inheritance