-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コンストラクター関数で行われるのと同じ方法で、現在のオブジェクト プロパティをハッシュから更新します。

4

1 に答える 1

3

コンストラクターに名前を付けることによって?

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

あなたは今電話することができます

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

obj.update(data);

これがお役に立てば幸いです..私も学んでいるので、100%確信はありません..でも、試してみてください;)

編集:あなたのこのコメントを読んだ後:「しかし、それは新しいインスタンスを返すでしょうね?それは私が望んでいないことです。」

Update 関数を記述して、コンストラクターで呼び出すことができると思います

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);
}

;

于 2012-08-03T09:55:34.230 に答える