2016-02-28 177 views
0

我遇到了運行此代碼的問題,它似乎應該可以工作,並且我已驗證了多個網站上的語法。問題是它說這個行if (this.bank > car.getCost()){調用的函數不是函數。我會發布我迄今爲止所做的工作。Javascript「不是函數」

var uniqueID = 0; 
 
var minCost = 5000; 
 
var maxCost = 100000; 
 
var minMileage = 100; 
 
var maxMileage = 100000; 
 

 
function carHeader() { 
 
    console.log("Make & Model \t| Year \t| Color \t| Cost \t| Mileage"); 
 
} 
 

 
function Car(make, model, year, color) { 
 
    this.ID = uniqueID; 
 
    uniqueID = uniqueID + 1; 
 
    this.make = make; 
 
    this.model = model; 
 
    this.makeAndModel = make + " " + model; 
 
    this.year = year; 
 
    this.color = color; 
 
    this.cost = Math.floor((Math.random() * maxCost) + minCost); 
 
    this.mileage = Math.floor((Math.random() * maxMileage) + minMileage); 
 
    this.getCarInfo = function() { 
 
    console.log(this.makeAndModel + "\t|" + this.year + "\t|" + this.color + "\t|" + this.cost + "\t|" + this.mileage); 
 
    } 
 
    this.getCost = function() { 
 
    return this.cost; 
 
    } 
 
} 
 

 

 
function Garage() { 
 
    this.garage = []; 
 
    this.bank = 1000000; //$1m 
 
    this.buyCar = function(car) { 
 
    if (this.bank > car.getCost()) { 
 
     this.garage.push(car); 
 
     this.bank = this.bank - car.getCost(); 
 
     console.log("Your new bank value is: " + this.bank); 
 
     return 1; 
 

 
    } else { 
 
     console.log("You do not have enough funds"); 
 
     return -1; 
 
    } 
 
    } 
 
    this.getGarageInfo = function() { 
 
    console.log("--Garage Info--"); 
 
    console.log("Your current total bank:" + this.bank); 
 
    carHeader(); 
 
    for (i = 0; i < this.garage.length; i++) { 
 
     this.garage[i].getCarInfo(); 
 
    } 
 
    } 
 
} 
 

 

 
var car1 = new Car("Honda", "CRX", 1985, "Black") 
 
var car2 = new Car("Hyundai", "Santa Fe", 2104, "White") 
 
var car3 = new Car("Lotus", "Elise", 2010, "Pearl") 
 
var car4 = new Car("Tesla", "Model S", 2014, "White") 
 
var car5 = new Car("Tesla", "Model 3", 2017, "Black") 
 

 
carArray = []; 
 
carArray.push(car1); 
 
carArray.push(car2); 
 
carArray.push(car3); 
 
carArray.push(car4); 
 
carArray.push(car5); 
 

 
carArray = [car1, car2, car3, car4, car5]; 
 
var myGarage = new Garage(); 
 

 
var fundsStillAvailable = true; 
 
var carIndex = 0; 
 

 
do { 
 
    console.log("Index :" + carIndex) 
 
    if (myGarage.buyCar([carIndex]) == 1) { 
 
    console.log("You have purchased a car" + carIndex + " length" + carArray.length); 
 
    if (carIndex < carArray.length) { 
 
     carIndex = carIndex + 1; 
 
    } else { 
 
     carIndex = 0; 
 
    } 
 
    } else { 
 
    console.log("You do not have enough money"); 
 
    fundsStillAvailable = false; 
 

 
    } 
 
} while (fundsStillAvailable === true) 
 

 
if (myGarage.buyCar(car1) == 1) { 
 
    console.log("You have purchased a car"); 
 
} 
 
myGarage.getGarageInfo();

+0

嘗試改變'myGarage.buyCar([carIndex])''來myGarage.buyCar(carArray [carIndex])' – dewd

+0

哇哦,是我不好。謝謝! – Darkweld

回答

0

看來你正試圖調用該isn't Car的實例對象上的功能。

我想你試圖從汽車陣列中檢索你的汽車,但是,似乎你錯過了包括數組名稱,以便通過索引檢索包含的汽車。添加carArray這條線解決您的問題:

if (myGarage.buyCar(carArray[carIndex]) == 1)