在javascript中从对象中提取数据

时间:2015-12-23 14:36:53

标签: javascript

我定义了一个“类”:

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不是函数”。

感谢您的帮助。

2 个答案:

答案 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
}

同样,对于基本汽车类的方法应使用相同的方法,例如setDoorgetDoor等。

此外,如果您想要OOP风格的"继承",您应该选择原型方法,并使用Object.create()

祝你好运!