-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 回答