2014-03-27 5 views
0

나는이 같은 객체를 정의 websocket은 다른 모든 클라이언트에게 메시지를 중계하는 서버에 연결됩니다.보내기 객체는

var rec = new Receipt('NEW', 10); 
socket.send({obj: rec}); 

문제는 다음과 같습니다. 다른 클라이언트에서 데이터를 수신하면 빈 개체가 수신됩니다. 데이터를 직렬화하고 다른 클라이언트에서 객체를 복제 할 수 있도록 전송하여 객체의 정의가 동일하게 유지되도록하는 방법이 있습니까? 당신이 객체가 statpr의 초기 값에 유지하려면 나는 그냥 나에게 "{}"

답변

1

을 제공, 도움이되지 JSON.stringify을 시도했습니다, 당신은 this에 저장해야합니다.

제공 한 코드에서 rec의 유일한 속성은 somefunction입니다.이 문자는 기능이기 때문에 문자열 화되지 않습니다.

function Receipt (stat, pr) { 
    this.status = stat; 
    this.price = pr; 
    this.somefunction = function (someArgs) { 
     // do something 
    } 
} 

var rec = new Receipt('NEW', 10); 
JSON.stringify(rec) 
// returns "{"status":"NEW","price":10}" 
+0

그러나 상태와 가격이 공개되지 않도록하려면 어떻게해야합니까? – Ashesh

+1

다음 개체에는 문자열화할 수있는 속성이 없습니다. JSON에는 함수가 포함되어 있지 않습니다. 포함시킬 속성 만 반환하는 toJSON 함수를 만들 수 있지만 일반적으로 자바 스크립트에서는 private 또는 public에 대해 걱정하지 않아도됩니다. 컨벤션은 프라이 머리 변수의 이름을 밑줄로 표시하는 것입니다. – gruppler