서버 (node.js)에 객체 whith 메소드 (함수)가 있습니다. 브라우저에서 메서드를 사용하여이 객체를 가져오고 싶습니다.메서드 (함수)를 사용하여 객체를 서버에서 클라이언트로 보낼 수 있습니까?
가능합니까?
I made simple example on GitHub
는 server.js과 index.html을 파일이 있습니다. 실행 -> 노드 서버. (주석 후)
++++++++ UPD 서버
내 객체 :
function ClassOrder(name, cost) {
this.name = name;
this.cost = cost;
this.parts = [];
this.summ = function() {
var summ = 0;
this.parts.forEach(function(part) {
summ += part.summ();
});
return summ + this.cost;
};
}
var myobject = new ClassOrder('my object', 10);
myobject.parts[0] = new ClassOrder('my first part', 20);
myobject.parts[1] = new ClassOrder('my second part', 30);
myobject.parts[1].parts[0] = new ClassOrder('my first in second part', 40);
console.log(myobject); // view myobject in console
console.log(myobject.summ()); // return 100 (10+20+30+40)
이 (요청시) 클라이언트로 보내
res.end(JSON.stringify(myobject));
및 클라이언트의 자바 스크립트 코드 (브라우저)에서 가져 오기
function getobject() {
var xhr = new XMLHttpRequest();
xhr.open('get', '/getobject', true);
xhr.onreadystatechange = function() {
if (xhr.readyState != 4) return;
var myobject = JSON.parse(this.responseText);
console.log(myobject); // all data ok
console.log(myobject.summ()); // no methods!!
};
xhr.send(null);
}
간단한 예제이며 실제로는 prototype을 사용합니다 (또는 util (node.js)에서 상속). 서버에서이 메서드를 사용하고 DB에 저장합니다. 모든 일은 괜찮습니다. 하지만 클라이언트에서 사용하지 않을 경우 모든 방법을 복사하여 붙여 넣기해야합니다. 이유는 무엇입니까?
또한 클라이언트의 내 개체에 내 예제 메서드를 추가하는 방법을 잘 모릅니다.
기술적으로 함수 코드를 직렬화하여 클라이언트 측에서 평가할 수 있지만 그 이유는 무엇입니까? 나는 코드를 유지하고 따르기가 더 어렵다고 주장 할 것이다. –
해당 코드를 추출하여 질문에 넣으십시오. 여기에는 두 가지 이유가 있습니다. 1) 더 많은 사람들이 귀하의 질문을 이해하고 응답 할 의사가 있다는 것을 알게 될 것입니다. 코드는 관련 코드로 분류되어 귀하의 질문에 배치되고 2) StackOverflow의 유용성 부분은 다음과 같습니다. Q & A에 대한 더 오래 지속되는 리소스이자 질문에 대한 외부 참조는 시간이 지남에 따라 사라지거나 변경되어 질문 및 코드 링크의 유용성을 망치는 경향이 있습니다. – jfriend00
@Felix Kling 내가 더블 코드를 갖고 싶지 않아. – pofigizm