2012-08-03 5 views
-1

이 내가 속성의 해시에서 개체를 만드는 방법은 다음과 같습니다개체 생성자를 다시 사용하는 방법은 무엇입니까?

var object = new function (data) { 
    var self = this; 
    self.property = data.property; 
    self.anotherProperty = data.anotherProperty; 

    self.method = function() { return 'something'; } 
    self.update = function (newData) { 
    //what is here ? 
    //i could have written: 
    self.property = newData.property; 
    self.anotherProperty = newData.anotherProperty; 
    //but why not reuse the constructor? 
    } 
}; 

내가이 함수 (생성자)를 재사용 할 수 해시에서 개체를 업데이트하는 방법을 생각해 본다. 그래서 :

object.update(newData) 

newData 해시가 생성자 함수에서 수행하는 것과 동일한 방법에서 현재 개체 속성을 업데이트 할 것입니다.

답변

2

생성자에 이름을 지정하면? 내가 너무 배우고 있기 때문에

function MyNotReallyClass(data){ 
    var self = this; 
    self.property = data.property; 
    self.method = function() { return 'something'; } 
    self.update = MyMyNotReallyClass; 
}; 

당신은 지금, 확실히 내가 100 % ..이 도움이

var obj = new MyNotReallyClass(data); 
var obj2 = new MyNotReallyClass(data); 

obj.update(data); 

내가 희망을 호출 할 수 있습니다 ..하지만 그래 시도 그것;)

편집 :이 의견을 읽은 후 : "그러나 그것은 새로운 인스턴스, 안 그래? 어떤 난 싶지 않아 "

을 난 당신이 업데이트 함수를 작성하고 생성자

var object = new function (data) { 
    var self = this; 
    self.update = function (newData) { 
    self.property = data.property; 
    self.method = function() { return 'something'; } 
    // and other things You want to do in constructor and update 
    } 
    self.update(data); 
} 

에 전화를 할 수 있다고 생각;.!

+0

안녕하세요, 좋은 생각 당신은 거꾸로 문제를 설정, 멋진 ..이 기능은 익명으로 유지됩니다. – Dziamid

관련 문제