2016-12-18 45 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)); 
}) 
相关问题