2016-12-18 41 views
-1

我填充數組使用此代碼對象:如何在Javascript中創建對象,以便以後可以訪問其屬性?

orders.push(getOrder(orderName, sender)); 
... 
    function getOrder (orderName, sender){ 
    this.orderName = orderName; 
    this.orderDate = new Date(); 
    this.sender = sender; 

    console.log('Created order object.\n orderName: '+ orderName + '\n orderDate: ' + this.orderDate.getTime())} 

當我嘗試訪問對象的數組中以後,我得到一個錯誤信息說「無法讀取屬性‘orderDate存儲’的未定義」。這裏是我用來訪問對象的代碼:

dishEmitter.on('checkIfReady', function(){ 
    orders.forEach(function(order){ 
     console.log(order); 
     var now = new Date(); 
     if(Math.abs((now.getTime() - order.orderDate.getTime())/1000) >= 5){ 
      broadcast('Your ' + order.orderName + ' is ready!', order.sender); 
      orders.splice(indexOf(order),1); 
     } 
    }) 
}) 

我正在寫一個小的示例應用程序,以瞭解關於nodejs的一些信息。所有我想要做的是創建一個訂單,並在5秒後,訂單應準備好(返回一些消息給訂購的客戶)

我上傳了我的完整代碼,以防萬一任何人想看它(一些字符串是在德國雖然):server.jsmensa.js

回答

3

getOrder沒有被用作構造函數,所以this引用實際上指向一個不同的對象不是返回什麼。將其更改爲function Order()orders.push(new Order()),而不是把它叫做:

function Order(orderName, sender) { 

    this.orderName = orderName; 
    this.orderDate = new Date(); 
    this.sender = sender; 
} 

用法:

dishEmitter.on('order', function(orderName, sender){ 
    orders.push(new Order(orderName, sender)); 
}) 
相關問題