我定义了一个“类”:
function Car(door, engine) {
this.door = door;
this.engine = engine;
function setDoor(door) {
this.door = door;
}
function getDoor(door) {
return door;
}
function setEngine(engine) {
return engine;
}
function getEngine() {
return engine;
}
}
我想从javascript中的对象中提取数据,在同一个文件中我有另一个“类”和要添加的函数。
function bodyCar(car) {
newCar = new Array();
function addCar(car) {
newCar = car.door;
newCar = car.engine;
return "The new car have " + car.door + " doors. engine " + car.engine;
}
}
对类和函数的调用:
var myCar = new bodyCar();
myCar.addCar(new Car(5,"2200cc"));
document.write(myCar);
但它对我不起作用。它给出了类型错误“myCar.addCar不是函数”。
感谢您的帮助。
答案 0 :(得分:2)
这不是你如何在类式Javascript中定义方法。您在构造函数内定义的函数仅在调用构造函数期间存在。
如果要将“实例方法”添加到“类”,则必须将它们放在构造函数的原型对象上:
function Car(door, engine) {
this.door = door;
this.engine = engine;
}
Car.prototype.setDoor = function(door) {
this.door = door;
}
Car.prototype.getDoor = function() {
return this.door;
}
Car.prototype.setEngine = function(engine) {
this.engine = engine;
}
Car.prototype.getEngine = function() {
return this.engine;
}
那就是说,你在第二类中的逻辑(创建然后丢弃一个数组)对我来说没有意义;我不确定你的实际目标是什么。但希望上述内容可以帮助您更加接近。
答案 1 :(得分:2)
如果你正在尝试创建OOP风格的类方法,那么你有一些选择:
创建类
的函数属性function bodyCar(car) {
newCar = new Array();
this.addCar = function(car) {
// do addCar method stuff here
}
}
或者如果你想使用原型方法方法(更好的内存管理)
function bodyCar(car) {
newCar = new Array();
}
bodyCar.prototype.addCar = function(car) {
// do addCar method stuff here
}
同样,对于基本汽车类的方法应使用相同的方法,例如setDoor
和getDoor
等。
此外,如果您想要OOP风格的"继承",您应该选择原型方法,并使用Object.create()