2014-05-16 9 views
-1

객체의 이름 속성에 관한 질문이 있으니 여기에 상황이 있습니다 : 메신저 prototype.constructor로 사용자 정의 객체 (Notka라고 함)를 만들고 메쏘드에 프로토 타입을 추가 한 다음 메신저를 푸시합니다. 배열을 객체의 배열로 변환 한 다음 배열을 json 객체로 변환하고 외부 서버에 저장합니다. 여태까지는 그런대로 잘됐다.객체의 이름 속성, 자바 스크립트

메신저 json으로 외부 서버에서 가져오고 개체 이름 속성의 배열로 변환 할 때 손실되고 익명 개체를 얻는 중 메쏘드를 인식하지 못합니다. 배열을 객체와 viceversa로 바꾸지 않고 모든 혼란을 피하기 위해 몇 가지 아이디어를 가지고 있지만 호기심을 묻는 메신저, 객체의 이름을 보존하거나 익명 객체의 이름을 변경하는 방법이 있습니다.

내가 좋아하는, 내 사용자 정의 유형의 새 개체를 만드는 시도 :

var nt = new Notka(); // my custom object 
nt = tab[index]; // tab is a array containing objects fetched from external sever 

하지만이 작동하지 않습니다, 새로 만든 Notka는 constructor.name Notka 만하면 병이 할당 객체 내가 다시 익명의 개체가 있습니다.

어떤 답 :

쿠바

+0

나는 당신의 서버 코드는 여기에 관련이있을 것 같아. 너는 그것을 정확히 어떻게 저장하고 있는가? –

+0

나는 그 이름이 프로세스를 변환 할 때 손실된다고 생각한다. im은 node.js 표현 프레임 워크와 XMLHTTPRequest를 POST 메소드와 함께 사용한다. 그것은 가능한 한 간단하고 표준으로 :) – user1692950

답변

0

없음 사전에 감사합니다, 당신은 JSON 객체를 직렬화하지 못하고, Notka는,하지 않은 무엇 인 (이름이나 함수의 방법을 보존 간단한 개체). 이 객체를 데이터베이스에 저장하면 먼저 문자열로 변환됩니다. 데이터베이스의 내용은 JSON.stringify(nt);의 결과입니다. 그래서 당신에게 돌아 왔을 때 구문 분석이 이루어지면 JSON standard에서 허용되는 것을 제외한 모든 것이 누락되었습니다. JavaScript, node.js 또는 다른 것과는 다릅니다. 훨씬 간단하고 특정 데이터 유형 (기본적으로 일반 객체, 숫자, 문자열 및 배열) 만 허용합니다.

var nt = new Notka(tab[index]); 

을 당신이 이전에 만든 개체를 원래 Notka에 대한 참조를 파괴하고 단순히 nt = tab[index]을 할 경우이 대신 같은 것을 할 수 있도록 아마 당신의 생성자를 수정하려는처럼

는 소리가 난다.

은 어쩌면

var Notka = function(obj) { 
    for (var i in obj) 
     this[i] = obj[i]; 
}; 

Notka.prototype.multiply = function(times) { 
    return this.someProperty * times; 
}; 

var tab = [{ 
    someProperty: 4, 
    another: "notka!" 
}, { 
    someProperty: 15, 
    another: "lalalala" 
}]; 

var nt = new Notka(tab[0]); 
nt.multiply(5); 

// 20 
+0

타이 솔루션, 여전히 조금 프로토 타입을 사용하는 방법을 혼란스러워하고 어떻게 자바 스크립트 봐야지. – user1692950

+0

명심해야 할 가장 중요한 점은 JSON과 JavaScript는 똑같지 않다는 것입니다. JSON은 XML과 같은 언어에 구애받지 않는 직렬화 형식으로 JavaScript 데이터 구조와 잘 매핑됩니다. IMO, JavaScript의 가장 강력한 기능은 함수 프로그래밍 기능입니다. JSON만으로는 불가능한 기능을 발견 할 수 있습니다. 그리고 예, 프로토 타입 상속은 OOP에 대해 다른 생각을하는 방식입니다. ** 자체적으로 ** 생각할 필요가 있습니다 ** - 자신을 호의적으로 생각하고 Java를 참조 점으로 사용하여 이해하려고 시도하지 마십시오. . – tjb1982

관련 문제