2016-12-18 1 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())} 

내가 나중에 배열의 개체에 액세스하려고

, 나는 "정의의 '주문일을'속성을 읽을 수 없습니다"라는 오류 메시지가 표시됩니다.

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 초 후에 명령이 준비됩니다. (주문한 클라이언트에게 메시지를 보냅니다.)

누구든지보고 싶을 경우를 대비하여 전체 코드를 업로드했습니다 mensa.js

답변

3

getOrderserver.js 생성자로 사용하지 않는, 그래서 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)); 
}) 
관련 문제